题解 | #两数之和#
两数之和
http://www.nowcoder.com/practice/20ef0972485e41019e39543e8e895b7f
一次遍历数组,遍历过程中,维持一个哈希表,用来保存值和下标,然后判断哈希表中是否有target-num[i]。
class Solution {
public:
/**
*
* @param numbers int整型vector
* @param target int整型
* @return int整型vector
*/
vector<int> twoSum(vector<int>& numbers, int target) {
vector<int> result{};
unordered_map<int,int> un_map{}; //<val,index>
for(int i=0;i<numbers.size();++i){
if (un_map.find(target-numbers[i])!=un_map.end()){
result.push_back(i);
result.push_back(un_map[target-numbers[i]]);
}
else{
un_map.insert({numbers[i],i});
}
}
sort(result.begin(),result.end());
for(auto& x:result) x++;
return result;
}
};