leetcode15 三數之和 雙指標

2021-10-01 14:31:27 字數 1288 閱讀 2476

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

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

例如, 給定陣列 nums =[-

1,0,

1,2,

-1,-

4],滿足要求的三元組集合為:[[

-1,0

,1],

[-1,

-1,2

]]

本題的關鍵:去重!!!

借助排序陣列實現去重,出現相同的元素直接跳過

class

solution

else

if(nums[l]

+ nums[r]

< cnums[i]

)else);

++l;

--r;

//去重

while

(l < r && nums[l]

== nums[l -1]

)++l;

while

(l < r && nums[r]

== nums[r +1]

)--r;}}

//去重

while

(i +

1< cnums.

size()

&& cnums[i +1]

== cnums[i]

)++i;

}return res;}}

;

比較簡潔的寫法:

class

solution

else

if(nums[l]

+ nums[r]

<

-nums[i]

)else);

++l;

--r;

//去重

while

(l < r && nums[l]

== nums[l -1]

)++l;

while

(l < r && nums[r]

== nums[r +1]

)--r;}}

//去重

while

(i +

1< nums.

size()

&& nums[i +1]

== nums[i]

)++i;

}return res;}}

;

Leetcode15 三數之和(雙指標)

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

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...