題目描述
輸入一個遞增排序的數(shù)組和一個數(shù)字S,在數(shù)組中查找兩個數(shù),使得他們的和正好是S,如果有多對數(shù)字的和等于S,輸出兩個數(shù)的乘積最小的。
輸出描述:
對應每個測試案例,輸出兩個數(shù),小的先輸出。
知識點
數(shù)組
Qiang的思路
對于這個問題,只需要設置兩個指針,一個指向數(shù)組的最左邊,一個指向最右邊,然后判斷兩個數(shù)的和和S是不是相等,如果相等的話就是要求的解。如果和大于S,說明最大值太大了,只需要將右邊的指針往前走。如果小的話就需要將左邊的指針往后走。如果兩個指針的相對位置發(fā)生了改變,就說明并不存在題目要求的兩個數(shù),這時返回一個空個list即可。
# -*- coding:utf-8 -*-
class Solution:
def FindNumbersWithSum(self, array, tsum):
# write code here
left=0
right=len(array)-1
while left<right:
if array[right]+array[left]==tsum:
return [array[left], array[right]]
elif array[right]+array[left]>tsum:
right-=1
else:
left+=1
return []
作者原創(chuàng),如需轉(zhuǎn)載及其他問題請郵箱聯(lián)系:lwqiang_chn@163.com。
個人網(wǎng)站:https://www.myqiang.top。