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 直接利...