3sum

#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;
    }


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 注意要跳过重复。把每个element 看成三个数中的一个,然后在这个数后面剩余的数里,从最大和最小的数开始做2sum.
    沉睡至夏阅读 157评论 0 0
  • 题目描述 Given an array S of n integers, are there elements a...
    云胡同学阅读 275评论 2 0
  • Medium刷狗家题库看到的类似的,这个题里面去duplicates的地方值得好好想一想。 为什么我们只在if (...
    greatseniorsde阅读 148评论 0 0
  • 原题 LintCode 57. 3Sum Description Given an array S of n in...
    Andiedie阅读 296评论 0 0
  • 每天改变一点点~
    半度Deep阅读 466评论 0 0