class Solution {
public:
vector
twoSum(vector
& nums, int target){
std::unordered_map
foo1;
vector
result;
for (int i = 0; i < nums.size() ; i++) {
int resttarget = target-nums[i];
std::unordered_map
::iterator it; it = foo1.find(resttarget); if( it != foo1.end() ){ result.push_back(it->second); result.push_back(i); return result; } foo1[nums[i]]=i; } return result; } }; class Solution { public: vector
twoSum(vector
& nums, int target){ std::unordered_map
foo1; vector
result; for (int i = 0; i < nums.size() ; i++) { int resttarget = target-nums[i]; std::unordered_map
::iterator it; it = foo1.find(resttarget); if( it != foo1.end() ){ result.push_back(it->second); result.push_back(i); return result; } foo1[nums[i]]=i; } return result; } };
针对TwoSum的问题解决的基本思路:
1.暴力解决方法:遍历数据,查找可能的结果;
2.利用unordered_map,解决在基于主键地快速检索各个元素的问题,有点类似python中的list。
http://classfoo.com/ccby/article/S3XoG 有关于unordered_map的具体使用说明,需要注意的是查找主键的方法:
- // 查找主键4
- std::unordered_map<int,double>::iterator it;
- it= foo1.find(4);
- if( it!= foo1.end())
- {
- std::cout<<"foo1.find(4):";
- std::cout<<"("<< it->first<<","<< it->second<<")"
- << std::endl;
- }