python和為定值的兩個數

2021-09-18 09:10:35 字數 942 閱讀 5906

1、劍指offer.和為s的兩個數:輸入乙個遞增排序的陣列和乙個數字s,在陣列中查詢兩個數,使得他們的和正好是s,如果有多對數字的和等於s,輸出兩個數的乘積最小的。

#時間複雜度o(n)

class solution:

def findnumberswithsum(self, array, tsum):

left = 0

right = len(array) - 1

res =

ret =

while left < right:

if array[left] + array[right] == tsum:

left += 1

right -= 1

elif array[left] + array[right] < tsum:

left += 1

else:

right -= 1

if res == :

return

else:

for i in res:

pos = ret.index(min(ret))

return res[pos]

leetcode1.two sum

class solution:

def twosum(self, nums, target):

dict ={}

for i in range(len(nums)):

if nums[i] in dict:

return [dict[nums[i]],i]

else:

dict[target-nums[i]] = i

上兩個題總結:找和為定值的兩個數,若無序則用字典時間複雜度o(n)空間複雜度o(n),有序用前後指標o(n)空間複雜度o(1)

尋找和為定值的兩個數

尋找和為定值的兩個數 給定乙個陣列 無序或者有序,兩種情況都要考慮 找出和為m的兩個數。最多時間複雜度能有多少?陣列有序的情況,在時間複雜度上我們就省去了排序的o nlogn 我們使用兩端指標掃瞄法是比較簡單的,時間複雜度為o n 空間複雜度為o 1 如下圖所示 然後,判斷它們指向的值之和sum是否...

尋找和為定值的兩個數

描述 輸入乙個陣列和乙個數字,在陣列中查詢兩個數,使得它們的和正好是輸入的那個數字。要求時間複雜度是o n 如果有多對數字的和等於輸入的數字,輸出任意一對即可。例如輸入陣列1 2 4 7 11 15和數字15。由於4 11 15,因此輸出4和11。分析 如果採取窮舉,複雜度為o n 2 可以換乙個思...

尋找和為定值的兩個數

題目 輸入乙個陣列和乙個數字,在陣列中查詢兩個數,使得它們的和正好是輸入的那個數字。要求時間複雜度是o n 如果有多對數字的和等於輸入的數字,輸出任意一對即可。例如輸入陣列1 2 4 7 11 15和數字15。由於4 11 15,因此輸出4和11。解析 如果陣列是無序的,先排序 n logn 然後用...