15 三數之和

2021-10-20 10:44:04 字數 583 閱讀 5790

給你乙個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c ,使得 a + b + c = 0 ?請你找出所有和為 0 且不重複的三元組。

注意:答案中不可以包含重複的三元組。

示例 1:

輸入:nums = [-1,0,1,2,-1,-4]

輸出:[[-1,-1,2],[-1,0,1]]

解題思路

1.首先對陣列進行排序,排序後固定乙個數 nums[i],再使用左右指標指向 nums[i]後面的兩端num[mid]和nums[right]

2.此時將三個數相加和為sum

3.如果sum小於0左邊數向右移動乙個,大於0右邊的數向左移動乙個

4.相等就存入陣列,左右都向中間移動一位

關鍵點

if(i>0&&nums[i]==nums[i-1]) continue;

和前乙個數字相比是不是相等,因為不能有重複的三元組,所以起到去重的作用。

if(sum>0) while(mid> threesum(int nums) }}

return res;}}

15 三數之和

給定乙個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c 使得 a b c 0 找出所有滿足條件且不重複的三元組。注意 答案中不可以包含重複的三元組。例如,給定陣列 nums 1,0,1,2,1,4 滿足要求的三元組集合為 1,0,1 1,1,2 最首先想到的是來三層...

15 三數之和

給定乙個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c 使得 a b c 0 找出所有滿足條件且不重複的三元組。注意 答案中不可以包含重複的三元組。有兩種寫法 第一種耗時久,但容易解讀 class solution if nums.length 3 else if ...

15 三數之和

給定乙個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c 使得 a b c 0 找出所有滿足條件且不重複的三元組。注意 答案中不可以包含重複的三元組。例如,給定陣列 nums 1,0,1,2,1,4 滿足要求的三元組集合為 1,0,1 1,1,2 分析排序 雙指標避免...