給定乙個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c ,使得 a+b
+c=0
?a + b + c = 0 ?
a+b+c=
0?找出所有滿足條件且不重複的三元組。
注意:答案中不可以包含重複的三元組。
演算法流程(借鑑leetcode-吳彥祖的題解):
特判,對於陣列長度 nn,如果陣列為 nullnull 或者陣列長度小於 33,返回 。
對陣列進行排序。
遍歷排序後陣列:
class
solution
if(nums[i]
+nums[l]
+nums[r]
<
0) # 如果三者之和小於零,則需要將左指標指向的索引向右移動
if(nums[i]
+nums[l]
+nums[r]==0
) # 如果三者之和等於零,符合條件,需要考慮去掉重複值
if(nums[r-1]
==nums[r]
&& r-
1>l) # 如果右指標的的下乙個值等於右指標指向的值,則可以跳過
vec.
push_back()
; # 當左右指標都不能跳過時,將該三元組放進二維陣列中
l++; # 將左指標右移
r--; # 將右指標左移,進行下一組遍歷
break;}
}}}return vec;}}
;
LeetCode 15 三數之和
15.給定乙個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c 使得 a b c 0 找出所有滿足條件且不重複的三元組。注意 答案中不可以包含重複的三元組 方法一,個人解法正確,但是效率太低,時間複雜度o n 3 時間超時,無法提交至leetcode public s...
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 class solutio...
leetcode15 三數之和
給定乙個包含 n 個整數的陣列nums,判斷nums中是否存在三個元素 a,b,c 使得 a b c 0 找出所有滿足條件且不重複的三元組。注意 答案中不可以包含重複的三元組。例如,給定陣列 nums 1,0,1,2,1,4 滿足要求的三元組集合為 1,0,1 1,1,2 先找兩數之和,然後再用un...