五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

力扣:15. 三數(shù)之和

2023-04-10 15:25 作者:薄荷硬糖醬  | 我要投稿

15. 三數(shù)之和

難度中等5841

給你一個整數(shù)數(shù)組?nums?,判斷是否存在三元組?[nums[i], nums[j], nums[k]]?滿足?i != j、i != k?且?j != k?,同時還滿足?nums[i] + nums[j] + nums[k] == 0?。請

你返回所有和為?0?且不重復的三元組。

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

?

?

示例 1:

輸入:nums = [-1,0,1,2,-1,-4]輸出:[[-1,-1,2],[-1,0,1]]解釋:nums[0] + nums[1] + nums[2] = (-1) + 0 + 1 = 0 。 nums[1] + nums[2] + nums[4] = 0 + 1 + (-1) = 0 。 nums[0] + nums[3] + nums[4] = (-1) + 2 + (-1) = 0 。 不同的三元組是 [-1,0,1] 和 [-1,-1,2] 。 注意,輸出的順序和三元組的順序并不重要。

示例 2:

輸入:nums = [0,1,1]輸出:[]解釋:唯一可能的三元組和不為 0 。

示例 3:

輸入:nums = [0,0,0]輸出:[[0,0,0]]解釋:唯一可能的三元組和為 0 。

?

提示:

  • 3 <= nums.length <= 3000

  • -105?<= nums[i] <= 105

通過次數(shù)1,330,456提交次數(shù)3,606,941


思路:

尋找元素->哈希法(但我不會寫,明天寫這種方法)

雙指針:

第一種法:

class?Solution?{

public:

????vector<vector<int>>?threeSum(vector<int>&?nums)?{

????????int?left,right;

????????vector<vector<int>>ans;

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

????????for(int?i=0;i<nums.size();i++){

????????????if(nums[i]>0)return?ans;

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

????????????left?=?i+1;

????????????right?=?nums.size()-1;

????????????while(left<right){

????????????????if(nums[i]+nums[left]+nums[right]>0)right--;

????????????????else?if(nums[i]+nums[left]+nums[right]<0)left++;

????????????????else{

????????????????????ans.push_back(vector<int>{nums[i],nums[left],nums[right]});

????????????????????while(right>left&&nums[left]==nums[left+1])left++;

????????????????????while(right>left&&nums[right]==nums[right-1])right--;

????????????????????left++;right--;

????????????????}

????????????????

????????????}

????????}

????????return?ans;???

????}

};

細節(jié):

  1. 雙指針法要將數(shù)組排序

  2. 題目中要去重

  3. 對i去重時要讓去重條件為nums[i]==nums[i-1]而不是nums[i]==nums[i+1],因為i+1為left這樣會導致像-1,-1,2這種答案不能被取到

  4. 選擇left與right的循環(huán)條件只能是left<right不能是left<=right若是第二種寫法的話就會讓left和right取到同一個值

  5. right和left的去重要在取到一個正確答案的代碼后面去重,不然會出現(xiàn)漏取的情況,并且left要嚴格小于right

  6. 記得在循環(huán)的后面讓left,right加加減減,不然就是死循環(huán)

  7. 因為數(shù)組已經(jīng)排序,所以當nums[i]>0時就不會再有正確答案出現(xiàn),就可以直接將ans這個二維數(shù)組返回


力扣:15. 三數(shù)之和的評論 (共 條)

分享到微博請遵守國家法律
从江县| 博客| 麻栗坡县| 新丰县| 建始县| 襄樊市| 绥棱县| 陈巴尔虎旗| 济宁市| 讷河市| 五家渠市| 东兰县| 启东市| 叶城县| 井研县| 肥东县| 酒泉市| 宁津县| 桦川县| 正安县| 东乌珠穆沁旗| 体育| 宜春市| 宝鸡市| 乾安县| 珠海市| 鄯善县| 徐州市| 武隆县| 乌兰县| 黄浦区| 曲麻莱县| 西贡区| 黑河市| 武清区| 柘荣县| 京山县| 万源市| 开远市| 丹凤县| 霸州市|