/*
* twosum.cpp
*
* Created on: 2017年9月21日
* Author: Administrator
*/
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <map>
#include <string>
#include <vector>
#include <set>
#include <queue>
#include <deque>
#include <stack>
#include <algorithm>
#include <unordered_map>
using namespace std;
/*请完成下面这个函数,实现题目要求的功能
当然,你也可以不按照下面这个模板来作答,完全按照自己的想法来 ^-^
******************************开始写代码******************************/
vector < int > twoSum(vector < int >& nums, int target) {
int i, sum;
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])){
int j=hmap[target-nums[i]];
if(j<i){
results.push_back(j+1);
results.push_back(i+1);
return results;
}
}
}
return results;
}
/******************************结束写代码******************************/
int main() {
vector < int > res;
int _nums_size = 0;
cin >> _nums_size;
cin.ignore (std::numeric_limits<std::streamsize>::max(), '\n');
vector<int> _nums;
int _nums_item;
for(int _nums_i=0; _nums_i<_nums_size; _nums_i++) {
cin >> _nums_item;
cin.ignore (std::numeric_limits<std::streamsize>::max(), '\n');
_nums.push_back(_nums_item);
}
int _target;
cin >> _target;
cin.ignore (std::numeric_limits<std::streamsize>::max(), '\n');
res = twoSum(_nums, _target);
for(int res_i=0; res_i < res.size(); res_i++) {
cout << res[res_i] << endl;;
}
return 0;
}
提交结果:
tmap.insert()报错
参考:
http://www.cnblogs.com/bakari/p/4871254.html