3sum

作者: 极速魔法 | 来源:发表于2017-06-20 16:23 被阅读10次
#include<iostream>
#include<vector>
#include<unordered_map>

using namespace std;
//3sum

class Solution {
public:
    vector<vector<int>> threeSum(vector<int>& nums) {
        unordered_map<int,vector<int >> record;
        vector<int> aux;
        vector<vector<int>> ret;
        vector<int> res;

        for(int i=0;i<nums.size();i++){
            for(int j=i+1;j<nums.size();j++){
                int target=-nums[i];
                if(record.find(target)!=record.end()){
                    int b=record[target][0];
                    int c=record[target][1];
                    if(i !=b && i!=c){
                        aux.push_back(nums[i]);
                        aux.push_back(nums[b]);
                        aux.push_back(nums[c]);
                        ret.push_back(aux);
                    }
                } else{
                    res.push_back(i);
                    res.push_back(j);
                    record[nums[i]+nums[j]]=res;
                }
            }
        }

            if(ret.size() !=0){
                return ret;
            } else{
                throw invalid_argument("no solution");
            }


        }
    };

    int main(){
        int nums[]={-1, 0, 1, 2, -1, -4};
        vector<int> vec(nums,nums+sizeof(nums)/sizeof(int));


        vector<vector<int>> output=Solution().threeSum(vec);
        for(int i=0;i<output.size();i++){
            for(int j=0;j<output[0].size();j++) {

                cout << output[i][j] << " ";
            }
        }
        cout<<endl;
        return 0;
    }


相关文章

网友评论

      本文标题:3sum

      本文链接:https://www.haomeiwen.com/subject/zxqaqxtx.html