码迷,mamicode.com
首页 > 其他好文 > 详细

18. 四数之和

时间:2020-03-15 19:09:36      阅读:55      评论:0      收藏:0      [点我收藏+]

标签:size   color   lse   span   思想   turn   ==   solution   int   

 1 //跟三数之和思想一样的,只不过多一层循环
 2 class Solution 
 3 {
 4 public:
 5     vector<vector<int>> fourSum(vector<int>& nums, int target) 
 6     {
 7         vector<vector<int>> res;
 8         int n = nums.size();
 9         sort(nums.begin(),nums.end());
10         for(int a = 0;a < n;a ++)
11         {
12              //列举的第一个元素不能与前面元素重合
13             if(a > 0 && nums[a] == nums[a-1]) continue;
14             
15             for(int i = a + 1;i < n;i ++)
16             {     
17                 int l = i + 1;
18                 int r = n - 1;
19                 int sum = target - nums[a] - nums[i];
20                 while(l < r)
21                 {
22                     if(nums[l] + nums[r] > sum) r--;
23                     else if(nums[l] + nums[r] < sum) l++;
24                     else
25                     {
26                         res.push_back({nums[a],nums[i],nums[l++],nums[r--]});
27                     }
28                 }
29             }
30         }
31 
32         sort(res.begin(),res.end());
33         auto it = unique(res.begin(),res.end());
34         res.erase(it,res.end());
35         return res;
36     }
37 };

 

18. 四数之和

标签:size   color   lse   span   思想   turn   ==   solution   int   

原文地址:https://www.cnblogs.com/yuhong1103/p/12499190.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!