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;
- }