給定乙個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c ,使得 a + b + c = 0 ?找出所有滿足條件且不重複的三元組。
注意:答案中不可以包含重複的三元組。
例如, 給定陣列 nums = [-1, 0, 1, 2, -1, -4],
滿足要求的三元組集合為:
[ [-1, 0, 1],
[-1, -1, 2]
]
class solution:
def threesum(self, nums: [int]) -> [[int]]:
'''1.排序
2.利用雙指標和哨兵尋找點
3.去重,哨兵檢測去重;雙指標迴圈去重
'''n=len(nums)
if (not nums) or n<3:
#剔除空集和小於三位數的情況
return
res=
#先排序,很重要
nums.sort()
print(nums)
for i in range(n):
'''i為哨兵,三元組第乙個,之後利用left,right雙指標尋找。'''
if(i>0 and nums[i]==nums[i-1]):
#剔除掉,前後哨兵一致的情況
continue
left=i+1
right=n-1
while(left0):
#和大於,說明數太大,換小的
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 本題的關鍵 去重!借...
三數之和(雙指標)
給定乙個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c 使得 a b c 0 找出所有滿足條件且不重複的三元組。注意 答案中不可以包含重複的三元組。例如,給定陣列 nums 1,0,1,2,1,4 滿足要求的三元組集合為 1,0,1 1,1,2 分析 題目要求 a ...