劍指offer 57 和為s的兩個數字 雙指標

2021-10-08 09:25:18 字數 659 閱讀 1395

思路:

由於是有序序列,所以查詢兩個數可以用首尾對撞指標,進行求和判定;

時間複雜度:o(n)

空間複雜度:o(1)

class

solution

:def

twosum

(self, nums: list[

int]

, target:

int)

-> list[

int]:if

not list:

return

# 思路:

# 由於是有序序列,所以查詢兩個數可以用首尾對撞指標,進行求和判定;

i, j =0,

len(nums)-1

while i <=j:

s = nums[i]

+ nums[j]

if s > target: j -=

1elif s < target: i +=

1else

:return

[nums[i]

, nums[j]

]

劍指offer 57 和為S的兩個數

題目一 這道題題目為 輸入乙個遞增排序的陣列和乙個數字s,在陣列中查詢兩個數,使得他們的和正好是s。如果有多對數字的和等於s,輸出任意一對即可。解題思路分為三個步驟 1 對於已經排好序的陣列,先在陣列裡隨機選擇兩個數字,如果它們的和正好等於s,則輸出這兩個數字。2 如果隨機選擇的兩個數字和小於s,可...

劍指offer 57 和為s的兩個數字

輸入乙個遞增排序的陣列和乙個數字s,在陣列中查詢兩個數,使得它們的和正好是s。如果有多對數字的和等於s,則輸出任意一對即可。對列表中元素根據target計算餘數,判斷餘數是否在例表中,有則返回。但時間複雜度高為o n 2 當列表很大時,超出時間限制。class solution def twosum...

劍指 Offer 57 和為s的兩個數字

輸入乙個遞增排序的陣列和乙個數字s,在陣列中查詢兩個數,使得它們的和正好是s。如果有多對數字的和等於s,則輸出任意一對即可。示例 1 輸入 nums 2,7,11,15 target 9 輸出 2,7 或者 7,2 示例 2 輸入 nums 10,26,30,31,47,60 target 40 輸...