博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode 4SUM
阅读量:5226 次
发布时间:2019-06-14

本文共 1915 字,大约阅读时间需要 6 分钟。

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

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

 

转载于:https://www.cnblogs.com/jilichuan/p/3997884.html

你可能感兴趣的文章
[转]跨越千年的RSA算法
查看>>
传奇学者应明生
查看>>
【程序执行原理】
查看>>
第二次项目冲刺(Beta阶段)5.24
查看>>
python的多行注释
查看>>
连接Oracle需要jar包和javadoc文档的下载
查看>>
UVA 10976 - Fractions Again?!
查看>>
poj 1183
查看>>
Dreamweaver cc新版本css单行显示
查看>>
Redis的Sorted Set有序集合命令
查看>>
【android】安卓的权限提示及版本相关
查看>>
3D重建的进阶了解---深度图,网格,体素,点云是什么
查看>>
JavaScript可否多线程? 深入理解JavaScript定时机制
查看>>
IOS基础学习
查看>>
js 模拟滚动条
查看>>
PHP 导出 Excell
查看>>
关于springmvc json交互产生的406错误
查看>>
python之-框架
查看>>
Gradle多项目构建
查看>>
Java基础教程——网络基础知识
查看>>