前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >三数之和》》。。

三数之和》》。。

作者头像
用户3519280
发布2023-07-08 10:51:56
1190
发布2023-07-08 10:51:56
举报
文章被收录于专栏:c++ 学习分享

11

代码语言:javascript
复制
#include <stdio.h>
#include <iostream>
#include <vector>
//#include <map> 
#if(__cplusplus == 201103L)
 #include <unordered_map>
 #include <unordered_set>
 #else
 #include <tr1/unordered_map>
 #include <tr1/unordered_set>
 namespace std
 {
     using std::tr1::unordered_map;
     using std::tr1::unordered_set;
     //using std::tr1;
     //using std::tr1;
 }
 //#include<tr1/unordered_map>
//using namespace std::tr1;
 #endif
 //#include <unordered_map>
using namespace std;
//using namespace std::tr1;
vector<vector<int> > threeSum(vector<int>&);
int main(void) {
	cout<<"ans"<<endl;
	int out[6]={-1,0,1,5,3,4};
	vector<int> nums(out,out+6);
	nums.push_back(-1);
		nums.push_back(0);
			nums.push_back(1);
				nums.push_back(2);	
				nums.push_back(5);
				nums.push_back(6);
				cout<<nums.size()<<endl;
				for(int i=0;i<nums.size();i++){
			//mm(nums[i])=mm(nums[i])+nums[i];
			cout<<nums[i];
		}
	vector<vector<int> > ans;
	ans=threeSum(nums);
	//cout<<"ans"<<endl;
	//cout<<ans[0][0]<<"ans"<<endl;
		//cout<<ans[0][1]<<endl;
		//cout<<ans[0][2]<<endl;
		//cout<<"ans"<<endl;
	vector<vector<int> >::iterator tmp;
	for(int i=0;i<ans.size();i++){
			//mm(nums[i])=mm(nums[i])+nums[i];
			//cout<<ans[i][0];
		}
		//cout<<ans[0][0]<<"ans"<<endl;
		//cout<<ans[0][1]<<endl;
		//cout<<ans[0][2]<<endl;
    //for (tmp = ans.begin(); ans != nums.end(); ++tmp)
//    {
//        cout << "(" << tmp->first << ", " << tmp->second << ")" << " ";
//    }
    return 0;
}
unordered_map<int ,int> mm;
		//vector<vector<int> > ans;
vector<vector<int> > threeSum(vector<int>& nums) {
		//::sort(nums.begin(),nums.end());
		//vector<int>::iterator tmp;

    //for (tmp = nums.begin(); tmp != nums.end(); ++tmp)
//    {
//        cout << "(" << tmp->first << ", " << tmp->second << ")" << " ";
//    }
vector<vector<int> > ans;
		for(int i=0;i<nums.size();i++){
			//mm(nums[i])=mm(nums[i])+nums[i];
			
		}
		int preI=100000+10;
		int preJ=100000+10;
		for(int i=0;i<nums.size();i++){
			if(nums[i]==preI)continue;
			mm[nums[i]]--;
			
			for(int j=i+1;j<nums.size();j++){
				int find=0-nums[i]-nums[j];
				if(find>=nums[i]&&find>=nums[j]){
				if(mm[find]>0){
					//ans.push_back(vector<int>{nums[i],nums[j],find});
					vector<int> v;
					v.push_back(nums[i]);
						v.push_back(nums[j]);
							v.push_back(find);
					ans.push_back(v);
				}
				
			}
			mm[nums[j]]++;
			preJ=nums[j];
			}
			mm[nums[i]]++;
			preJ=nums[i];
			
		}
		return ans;
    }

22

代码语言:javascript
复制
#include <stdio.h>
#include <iostream>
#include <vector>
//#include <map> 
#if(__cplusplus == 201103L)
 #include <unordered_map>
 #include <unordered_set>
 #else
 #include <tr1/unordered_map>
 #include <tr1/unordered_set>
 namespace std
 {
     using std::tr1::unordered_map;
     using std::tr1::unordered_set;
     //using std::tr1;
     //using std::tr1;
 }
 //#include<tr1/unordered_map>
//using namespace std::tr1;
 #endif
 //#include <unordered_map>
using namespace std;
//using namespace std::tr1;
vector<vector<int> > threeSum(vector<int>&);
int main(void) {
	cout<<"ans"<<endl;
	int out[6]={-1,0,1,5,3,4};
	//vector<int> nums(out,out+6);
	vector<int> nums;
	nums.push_back(-1);
		nums.push_back(0);
			nums.push_back(1);
				nums.push_back(2);	
				nums.push_back(5);
				nums.push_back(6);
				cout<<nums.size()<<endl;
				for(int i=0;i<nums.size();i++){
			//mm(nums[i])=mm(nums[i])+nums[i];
			cout<<nums[i];
		}
	vector<vector<int> > ans;
	ans=threeSum(nums);
	//cout<<"ans"<<endl;
	//cout<<ans[0][0]<<"ans"<<endl;
		//cout<<ans[0][1]<<endl;
		//cout<<ans[0][2]<<endl;
		//cout<<"ans"<<endl;
	vector<vector<int> >::iterator tmp;
	for(int i=0;i<ans.size();i++){
			//mm(nums[i])=mm(nums[i])+nums[i];
			//cout<<ans[i][0];
		}
		//cout<<ans[0][0]<<"ans"<<endl;
		//cout<<ans[0][1]<<endl;
		//cout<<ans[0][2]<<endl;
    //for (tmp = ans.begin(); ans != nums.end(); ++tmp)
//    {
//        cout << "(" << tmp->first << ", " << tmp->second << ")" << " ";
//    }
    return 0;
}
unordered_map<int ,int> mm;
		//vector<vector<int> > ans;
vector<vector<int> > threeSum(vector<int>& nums) {
		//::sort(nums.begin(),nums.end());
		//vector<int>::iterator tmp;

    //for (tmp = nums.begin(); tmp != nums.end(); ++tmp)
//    {
//        cout << "(" << tmp->first << ", " << tmp->second << ")" << " ";
//    }
vector<vector<int> > ans;
		for(int i=0;i<nums.size();i++){
			//mm(nums[i])=mm(nums[i])+nums[i];
			
		}
		int preI=100000+10;
		int preJ=100000+10;
		for(int i=0;i<nums.size();i++){
			if(nums[i]==preI)continue;
			mm[nums[i]]--;
			
			for(int j=i+1;j<nums.size();j++){
				int find=0-nums[i]-nums[j];
				if(find>=nums[i]&&find>=nums[j]){
				if(mm[find]>0){
					//ans.push_back(vector<int>{nums[i],nums[j],find});
					vector<int> v;
					v.push_back(nums[i]);
						v.push_back(nums[j]);
							v.push_back(find);
					ans.push_back(v);
				}
				
			}
			mm[nums[j]]++;
			preJ=nums[j];
			}
			mm[nums[i]]++;
			preJ=nums[i];
			
		}
		return ans;
    }

ans的函数返回值总是不对,

代码语言:javascript
复制
ans没有值,是怎么回事???

vector<vector<int> > ans=threeSum(nums);

下面pushback是有值的,但是这方法也太笨了
代码语言:javascript
复制
#include <stdio.h>
#include <iostream>
#include <vector>
//#include <map> 
#if(__cplusplus == 201103L)
 #include <unordered_map>
 #include <unordered_set>
 #else
 #include <tr1/unordered_map>
 #include <tr1/unordered_set>
 namespace std
 {
     using std::tr1::unordered_map;
     using std::tr1::unordered_set;
     //using std::tr1;
     //using std::tr1;
 }
 //#include<tr1/unordered_map>
//using namespace std::tr1;
 #endif
 //#include <unordered_map>
using namespace std;
//using namespace std::tr1;
vector<vector<int> > threeSum(vector<int>&);
	vector<vector<int> > ans;
int main(void) {
	cout<<"ans"<<endl;
	int out[6]={-1,0,1,5,3,4};
	//vector<int> nums(out,out+6);
	vector<int> nums;
	nums.push_back(-1);
		nums.push_back(0);
			nums.push_back(1);
				nums.push_back(2);	
				nums.push_back(5);
				nums.push_back(6);
				cout<<nums.size()<<endl;
				for(int i=0;i<nums.size();i++){
			//mm(nums[i])=mm(nums[i])+nums[i];
			cout<<nums[i];
		}
	vector<vector<int> > ans=threeSum(nums);
	for(int i=0;i<threeSum(nums).size();i++){
		ans.push_back(threeSum(nums)[i]);
	}
	//ans=threeSum(nums);
	//cout<<"ans"<<endl;
	//cout<<ans[0][0]<<"ans"<<endl;
		//cout<<ans[0][1]<<endl;
		//cout<<ans[0][2]<<endl;
		//cout<<"ans"<<endl;
	vector<vector<int> >::iterator tmp;
	for(int i=0;i<ans.size();i++){
			//mm(nums[i])=mm(nums[i])+nums[i];
			//cout<<ans[i][0];
		}
		cout<<endl<<ans.size()<<"ans"<<endl;
		cout<<endl<<threeSum(nums).size()<<"ans"<<endl;
		//cout<<ans[0][0]<<"ans"<<endl;
		//cout<<ans[0][1]<<endl;
		//cout<<ans[0][2]<<endl;
    //for (tmp = ans.begin(); ans != nums.end(); ++tmp)
//    {
//        cout << "(" << tmp->first << ", " << tmp->second << ")" << " ";
//    }
    return 0;
}
unordered_map<int ,int> mm;
		//vector<vector<int> > ans;
vector<vector<int> > threeSum(vector<int>& nums) {
		//::sort(nums.begin(),nums.end());
		//vector<int>::iterator tmp;

    //for (tmp = nums.begin(); tmp != nums.end(); ++tmp)
//    {
//        cout << "(" << tmp->first << ", " << tmp->second << ")" << " ";
//    }
vector<vector<int> > ans;
		for(int i=0;i<nums.size();i++){
			//mm(nums[i])=mm(nums[i])+nums[i];
			
		}
		int preI=100000+10;
		int preJ=100000+10;
		for(int i=0;i<nums.size();i++){
			if(nums[i]==preI)continue;
			mm[nums[i]]--;
			
			for(int j=i+1;j<nums.size();j++){
				int find=0-nums[i]-nums[j];
				if(find>=nums[i]&&find>=nums[j]){
				if(mm[find]>0){
					//ans.push_back(vector<int>{nums[i],nums[j],find});
					vector<int> v;
					v.push_back(nums[i]);
						v.push_back(nums[j]);
							v.push_back(find);
					ans.push_back(v);
				}
				
			}
			mm[nums[j]]++;
			preJ=nums[j];
			}
			mm[nums[i]]++;
			preJ=nums[i];
			
		}
		return ans;
    }
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-05-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档