15. 三数之和

Posted yuhong1103

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了15. 三数之和相关的知识,希望对你有一定的参考价值。

 1 // 312/313   始终会出现一种情况——>全0  
 2 
 3 // 后来引进了双指针算法
 4 class Solution 
 5 {
 6 public:
 7     vector<vector<int>> threeSum(vector<int>& nums) 
 8     {
 9         vector<vector<int>> res;
10         int n = nums.size();
11         sort(nums.begin(),nums.end());
12         for(int i = 0;i < n;i ++)
13         {
14             //列举的第一个元素不能与前面元素重合——>去重
15             if(i > 0 && nums[i] == nums[i-1]) continue;
16             
17             //第一个元素也不能为正数——>剪枝
18             if(nums[i] > 0) break;
19 
20             int l = i + 1;
21             int r = n - 1;
22             int target = -nums[i];
23             while(l < r)
24             {
25                 if(nums[l] + nums[r] > target) r--;
26                 else if(nums[l] + nums[r] < target) l++;
27                 else
28                 {
29                     res.push_back({nums[i],nums[l++],nums[r--]});
30                 }
31             }
32         }
33         sort(res.begin(),res.end());
34         auto it = unique(res.begin(),res.end());
35         res.erase(it,res.end());
36         return res;
37     }
38 };

 

以上是关于15. 三数之和的主要内容,如果未能解决你的问题,请参考以下文章

15. 三数之和

LeetCode 15. 三数之和

15.三数之和

代码随想录算法训练营第7天 | ● 454.四数相加II ● 383. 赎金信 ● 15. 三数之和 ● 18. 四数之和 ● 总结

15.三数之和

代码随想录算法训练营第七天 | 454.四数相加II ,383. 赎金信 ,15. 三数之和,18. 四数之和