题解 | #两数之和#
两数之和
http://www.nowcoder.com/practice/20ef0972485e41019e39543e8e895b7f
直接用哈希表一遍查找,由于题目要求输出的下标,第一个小于第二个,所以输出时要进行比较。
vector<int> twoSum(vector<int>& numbers, int target) { unordered_map<int, int> record; for (int i = 0; i < numbers.size(); ++i) { int theOther = target - numbers[i]; if (record.find(theOther) != record.end()) { int res[2] = {min(i + 1, record[theOther] + 1), max(i + 1, record[theOther] + 1)}; return vector<int>(res, res + 2); } record[numbers[i]] = i; } return {}; }