給你乙個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c ,使得 a + b + c = 0 ?請你找出所有滿足條件且不重複的三元組。
注意:答案中不可以包含重複的三元組。
示例:給定陣列 nums = [-1, 0, 1, 2, -1, -4],
滿足要求的三元組集合為:
[[-1, 0, 1],
[-1, -1, 2]
]思路:排序+雙指標;
先將陣列從小到大排序,從i=0開始,l指標指向i+1,r指標指向l-1(l為陣列長度),判斷nums[l]+nums[r]是否等於-nums[i]. 如果大於,則r指標減一,小於則l指標加一,相等就存於set中。set用於去重。
**:(很慢)
class
solution);
j++; k--;}
else
if(sum>target)
else
if(sumreturn vectorint>>
(se.
begin()
, se.
end())
;}};
力扣15 三數之和
給定乙個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c 使得 a b c 0 找出所有滿足條件且不重複的三元組。注意 答案中不可以包含重複的三元組。例如,給定陣列 nums 1,0,1,2,1,4 滿足要求的三元組集合為 1,0,1 1,1,2 題解 這題wa了好多...
力扣15 三數之和 C
這道題兩個難點。第乙個是不能使用三層迴圈,因為會時間溢位,第二個也是主要的問題如何去重。一開始想要直接排序後去重,但是這樣的話會缺失解,比如這個解就得不到,所以不能直接去重。後來想到了可以判斷nums i 與nums i 1 是否相同,如果相同可以進行i 這樣就可以去重了,但這只是死一次去重,要用不...
力扣 15 三數之和 Golang
知識點 陣列 難度 中等 題目 給定乙個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c 使得 a b c 0 找出所有滿足條件且不重複的三元組。注意 答案中不可以包含重複的三元組。示例 給定陣列 nums 1,0,1,2,1,4 滿足要求的三元組集合為 1,0,1 ...