leetcode Two Sum 每日一题 (。・∀・)ノ゙嗨

来源:互联网 发布:时间校正软件 编辑:程序博客网 时间:2024/06/09 21:50
//two sum up#include<iostream>#include<map>#include<vector>using namespace std;class Solution{public:vector<int> twosum(vector<int>& nums, int target){int i,n;vector<int> results;map<int,int> hmap;for(i =0;i<nums.size();i++){if(!hmap.count(nums[i])){hmap.insert(pair<int,int> (nums[i],i));}if(hmap.count(target-nums[i])){n = hmap[target-nums[i]];if(n<i){results.push_back(n);results.push_back(i);}}}return results;}};int main(){int n[] = {3,2,4};vector<int> nums(n,n+3);Solution sumT;vector<int> mp;int target;cin>>target;mp = sumT.twosum(nums,target);cout<<mp[0]<<endl;cout<<mp[1]<<endl;while(1);}
//第二遍 TwoSumUp//还是有收获的#include<iostream>#include<vector>#include<map> using namespace std; class Solution{ public:     vector<int> twoSum(vector<int>& num,int target){         map<int, int> enumd;         vector<int> res;         int i;         for(int i = 0; i < num.size(); i++){            //这里多了个括号所以一直有错误( ╯□╰ )            if(!enumd.count(num[i])){               enumd.insert(pair<int,int> (num[i],i));            }            //ount检查的是key            if(enumd.count(target-num[i])){                //加上这个条件是防止自己加自己可以得到目标值target,例如3+3=6                if(enumd[target-num[i]]<i){                    res.push_back(enumd[target - num[i]]);                    res.push_back(i);                }            }        }        return res;     } }; int main(){    int i = 0;    int ia[] = {2,3,1,4,9};    int target;    vector<int> v(ia,ia+5);    vector<int> res;    Solution data;    cin>>target ;    //cout<<target<<" target "<<endl;    res = data.twoSum(v,target);    cout<< res[0]<<"    ==  "<<res[1]<<endl;    while(1); }
使用C++的map很好用,用值做key,原序号做value。
0 0
原创粉丝点击