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

4sum

时间:2017-10-04 19:59:28      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:ret   duplicate   bsp   return   ++   blog   hat   log   note   

Given an array S of n integers, are there elements abc, and d in S such that a + b + c + d = target? Find all unique quadruplets in the array which gives the sum of target.

Note: The solution set must not contain duplicate quadruplets.

For example, given array S = [1, 0, -1, 0, -2, 2], and target = 0.

A solution set is:
[
  [-1,  0, 0, 1],
  [-2, -1, 1, 2],
  [-2,  0, 0, 2]
]
利用3sum的思想,还是比较简单的
 1 class Solution {
 2 public:
 3     vector<vector<int>> fourSum(vector<int>& nums, int target) {
 4         sort(nums.begin(),nums.end());
 5         vector<int> temp;
 6         vector<vector<int>> res;
 7         //利用3sum
 8         int target3,target2;
 9         for(int i=0;i<nums.size();i++)
10         {
11             target3=target-nums[i];
12             for(int j=i+1;j<nums.size();j++)
13             {
14                 int front=j+1,back=nums.size()-1;
15                 target2=target3-nums[j];
16                 while(front<back)
17                 {
18                     if(nums[front]+nums[back]<target2)   front++;
19                     else if(nums[front]+nums[back]>target2)  back--;
20                     else
21                     {
22                          temp.push_back(nums[i]);
23                          temp.push_back(nums[j]);
24                          temp.push_back(nums[front]);
25                          temp.push_back(nums[back]);
26                          res.push_back(temp);
27                          while(nums[front]==temp[2])  front++;
28                          while(nums[back]==temp[3])  back--;
29                         temp.clear();
30                     }
31                 }
32                 while(j+1<nums.size()&&nums[j]==nums[j+1])   j++;
33             }
34             while(i+1<nums.size()&&nums[i]==nums[i+1])   i++;
35         }
36         return res;
37     }
38 };

 

4sum

标签:ret   duplicate   bsp   return   ++   blog   hat   log   note   

原文地址:http://www.cnblogs.com/wsw-seu/p/7627021.html

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