雙指標解決Leetcode 15 3 Sum

2021-08-20 08:44:33 字數 695 閱讀 5906

1. 3sum其實和2sum思路差不多。只要把第三個數變成2sum的target就好了。當然要先sort一下,原陣列是無序的。

2. 也要考慮重複陣列的情況。比如left[i]==left[i-1]說明這個數字在i-1的時候應該考慮過了,需要skip.同理right也是一樣。還有一種重複情況是,當target重複的時候,也要skip.

3. 有個特殊情況我一直過不去。[0,0,0],差點用特殊情況if處理了。其實這一步在判斷第二點重複target情況的時候可以同時考慮進去。既i>0 and numbers[i]==numbers[i-1].

4. o(n^2)

def sum3(numbers):

numbers.sort() # [-4,-1,-1,0,1,2] [-2,0,0,2,2]

res =

for i in range(0,len(numbers)-2):

if i>0 and numbers[i]==numbers[i-1]:

continue

target=numbers[i]*-1

left=i+1

right=len(numbers)-1

while lefttarget:

right -= 1

else:

left += 1

return res

Leetcode15 三數之和(雙指標)

給定乙個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c 使得 a b c 0 找出所有滿足條件且不重複的三元組。注意 答案中不可以包含重複的三元組。例如,給定陣列 nums 1,0,1,2,1,4 滿足要求的三元組集合為 1,0,1 1,1,2 給定乙個包含 n 個...

leetcode15 三數之和 雙指標

給定乙個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c 使得 a b c 0 找出所有滿足條件且不重複的三元組。注意 答案中不可以包含重複的三元組。例如,給定陣列 nums 1,0,1,2,1,4 滿足要求的三元組集合為 1,0 1 1,1,2 本題的關鍵 去重!借...

雙指標 模擬 leetcode 15 三數之和

題目鏈結 給你乙個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c 使得 a b c 0 請你找出所有滿足條件且不重複的三元組。注意 答案中不可以包含重複的三元組。示例 給定陣列 nums 1,0,1,2,1,4 滿足要求的三元組集合為 1,0 1 1,1,2 直接利...