leetcode 15 三數之和 c

2021-09-26 07:01:53 字數 913 閱讀 9362

題目:

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

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

例如, 給定陣列 nums = [-1, 0, 1, 2, -1, -4],

滿足要求的三元組集合為:

[[-1, 0, 1],

[-1, -1, 2]

]思路:

首先將陣列進行排序,因為需要的是三數和為0,所以先選擇乙個最小的數nums[0],因為是不需要相同的三元組和,所以nums[i]!=nums[i-1],假如相等就直接跳過,但是有乙個前提就是i不能等於0,因為如果在i等於0的時候也進行nums[i]!=nums[i-1]的判斷,那麼在[0,0,0,0]這種樣本就不能通過,因為i等於0的時候因為是第一次進行三數之和等於0的判斷,結果陣列中目前沒有任何有效的結果,肯定不能重複,所以不需要再做nums[i]!=nums[i-1]的判斷,選定i之後,因為要等於0,首先選擇i後面元素中的最大值和最小值,也就是nums[i+1] and nums[len-1],再將三者的和與0做比較,大於0則代表大的那個值取得過大,需要進行索引減1操作,小於0代表小的那個值過小,將其索引加一,在這個過程中必須保證l**:

class solution ;

sort(nums.begin(),nums.end());

vector>res;

for(int i=0;i);

l++;

r--;

while(ll++;

while(lr--;

}else if(target<0)

else

}else

break;}}

return res;

}};

LeetCode 15 三數之和 C

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

Leetcode 15 三數之和 C

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

LeetCode 15 三數之和

15.給定乙個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c 使得 a b c 0 找出所有滿足條件且不重複的三元組。注意 答案中不可以包含重複的三元組 方法一,個人解法正確,但是效率太低,時間複雜度o n 3 時間超時,無法提交至leetcode public s...