two sum
class Solution { public: vector<int> twoSum(vector<int> &numbers, int target) { vector<int> ret(2,-1); unordered_map<int, int> m; //value->index map for(int i = 0; i < numbers.size(); i ++) { if(m.find(target-numbers[i]) == m.end()) //target-numbers[i] not appeared m[numbers[i]] = i; else { ret[0] = m[target-numbers[i]]+1; ret[1] = i+1; return ret; } } } };
每次遍历,都开始查询,如果没有匹配的值,就加入map中,这样可以保证,一次性遍历完成。即便是有相同元素也没有关系。比如3,4,3,6;target=6时。。
而不是常规的思路,先加入map然后查询。。