zoukankan      html  css  js  c++  java
  • 4Sum

    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]
    ]
    

    Subscribe to see which companies asked 

    class Solution{
    public:
        vector<vector<int>> fourSum(vector<int> & nums,int target){
            vector<vector<int>> res;
            if(nums.size()<4)
                return res;
    
            sort(nums.begin(),nums.end());
            unordered_map<int,vector<pair<int,int>>> cache;
            for(size_t i =0 ;i< nums.size();i++){
                for (size_t j = i+ 1;j<nums.size();j++){
                    cache[nums[i]+nums[j]].push_back(pair<int,int>{i,j});
                }
            }
    
            for(size_t i=0;i<nums.size();i++){
                for (size_t j = i+1;j<nums.size();j++){
                    int key = target - nums[i] - nums[j];
                    if(cache.find(key) == cache.end()){
                        continue;
                    }
    
                    vector<pair<int,int>> vec = cache[key];
                    for(size_t k = 0;k < vec.size();k++){
                        if(vec[k].first <= j)
                            continue;
                        res.push_back({nums[vec[k].first],nums[vec[k].second],nums[i],nums[j]});
                    }
                }
            }
            sort(res.begin(),res.end());
             res.erase(unique(res.begin(),res.end()),res.end());
            return res;
        }
    };
  • 相关阅读:
    用C语言画个简单表格
    魔方阵 奇数偶数都成立
    HDU 1527 取石子游戏
    HDU 2669 Romantic
    21位花朵数(详解)
    博弈论总结(1)
    qsort排序(即快排)
    POJ 1061 青蛙的约会
    HDU 2176 取(m堆)石子游戏
    HDU1061 求n^n的最低位
  • 原文地址:https://www.cnblogs.com/wxquare/p/5921986.html
Copyright © 2011-2022 走看看