題目描述:給你乙個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c ,使得 a + b + c = 0 ?請你找出所有滿足條件且不重複的三元組。
注意:答案中不可以包含重複的三元組。
示例:
給定陣列 nums = [-1, 0, 1, 2, -1, -4],
滿足要求的三元組集合為:
[ [-1, 0, 1],
[-1, -1, 2]
]
解法一
排序+雙指標法,時間複雜度:o(n)
//先對陣列進行排序
//固定第乙個數nums[i],如果nums[i]大於0,那麼不可能有三個數的和為0
//如果nums[i]等於它的前乙個數nums[i-1],就跳過這個數,去重
//使用兩個指標,left和right,left從i+1開始,right從len-1開始
//當left//nums[i],nums[left]和nums[right]的和為sum
//如果sum>0,就將right前移,right--
//如果sum<0,就將left後移,left++
//sum等於0,先把這一組結果記錄下來
//將left++,right--
//在left//在leftclass
solution
//對陣列進行排序
arrays.
sort
(nums)
;for
(int i=
0;i)while
(left== nums[right+1]
)}else
if(sum >0)
else left++;}
}return res;
}}
leetcode演算法題 三數之和
排序 雙指標法 先將數列從小到大排序 先選擇乙個數,這一步時間複雜度為o n 在這個數後面的數中用雙指標分別從頭尾遍歷,找到符合條件的數,直到頭尾指標相遇,這一步時間複雜度為o n 迴圈執行第2 3步,總時間複雜度為o n n void twosum vector int nums,int targ...
LeetCode 三數之和演算法題
思路 1.先將陣列排序,目的是便於去重,以及在特殊情況下,讓程式提前結束 2.使用三個指標,第乙個指標從陣列第乙個元素遍歷到最後乙個元素 第二個指標從第乙個指標後一位往後遍歷,第三個指標從陣列最後一位元素往前遍歷 3.當陣列元素相同時,要跳過 public list threesum int num...
python數圈演算法 演算法題 三數之和
題目 於力扣 理論基礎雜湊表 三數之和 題目描述三數之和 示例給定 1,0,1,2,1,4 target 0 解題思路暴力解法 o n 3 a b c 0 o n 2 雙指標python 解法 a b c 0 def threesum self,nums if len nums 3 return n...