标签:
第一题是Two Sum
同样是用哈希表来做,需要注意的是在查打gap是要排除本身。比如target为4,有一个值为2,gap同样为2。
vector<int> twoSum(vector<int> &num, int target) { unordered_map<int, int> mapping; vector<int> result; for (int i = 0; i < num.size(); i++) mapping[num[i]] = i; for (int i = 0; i < num.size(); i++) { int gap = target - num[i]; //第二个判断条件更准确的是mapping[gap]!=i,防止选到自身 if (mapping.find(gap) != mapping.end()&&mapping[gap]>i) { result.push_back(i + 1); result.push_back(mapping[gap] + 1); break; } } return result; }
标签:
原文地址:http://www.cnblogs.com/573177885qq/p/5492568.html