演算法題 三數之和

2021-10-07 19:42:07 字數 910 閱讀 5460

題目描述:給你乙個包含 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...