zoukankan      html  css  js  c++  java
  • leetcode 4SUM

    自己写的比较差的,时间过不去

    #include <iostream>
    #include <cstdlib>
    #include <string>
    #include <algorithm>
    #include <vector>
    #include <stack>
    #include <queue>
    #include <map>
    #include <sstream>
    using namespace std;

    string ato_string(int value){
        stringstream ss;
        ss << value;
        return ss.str();
    }
    void out (vector<int> v){
        for(int i = 0; i < v.size(); i++){
            cout<<v[i]<<" ";
        }
        cout<<endl;
    }

    vector<vector<int> > deep(vector<int> num, int target, int index){
        if (index == 0 || num.size() < index)
        {
            vector<vector<int> > t;
            return t;
        }
        vector<vector<int> > result;
        for(int i = 0; i < num.size(); i++){
            int tmp = num[i];
            if (index == 1)
            {
                if (tmp == target)
                {
                    vector<int> t;
                    t.push_back(tmp);
                    result.push_back(t);
                }
                continue;
            }
            vector<int> copy = num;
            copy.erase(copy.begin() + i);
            vector<vector<int> > re = deep(copy, target - tmp, index-1);
            for (int j = 0; j < re.size(); ++j)
            {
                vector<int> t = re[j];
                t.push_back(tmp);
                result.push_back(t);
            }
        }
        for(int i = 0; i < result.size(); i++){
            sort(result[i].begin(), result[i].end());        
        }
        return result;
    }

    vector<vector<int> > fourSum(vector<int> &num, int target) {
        vector<vector<int> > r = deep(num, target, 4);
        map<stringbool> m;
        for(int i = 0 ; i != r.size(); ++i){
            string key = ato_string(r[i][0]) + ato_string(r[i][1]) + ato_string(r[i][2]) + ato_string(r[i][3]);
            if(m.find(key) != m.end()){
                r.erase(r.begin()+i);
                i--;
            }else{
                m[key] = true;
            }
        }
        return r;
            
    }

    int main(int argc, char** argv) {
        vector<int> s;
        s.push_back(-9);
        s.push_back(-2);
        s.push_back(7);
        s.push_back(6);
        s.push_back(-8);
        s.push_back(5);
        s.push_back(8);
        s.push_back(3);
        s.push_back(-10);
        s.push_back(-7);
        s.push_back(8);
        s.push_back(-8);
        s.push_back(0);
        s.push_back(0);
        s.push_back(1);
        s.push_back(-8);
        s.push_back(7);
        vector<vector<int> > r = fourSum(s,4);
        for(int i = 0; i < r.size(); i++){
            out(r[i]);        
        }
        return 0 ;}
  • 相关阅读:
    4.Spring系列之Bean的配置1
    3.Spring系列之IOC&DI
    2.Spring系列之HelloWorld
    1.spring系列之简要概述
    SVN 安装与使用
    6.用CXF编写基于Spring的WebService
    5.webService拦截器
    4.CXF所支持的数据类型
    APP消息推送及疑问解答
    VMware安装CentOS
  • 原文地址:https://www.cnblogs.com/jilichuan/p/3997884.html
Copyright © 2011-2022 走看看