题目描述:给定一个数组,和一个int整数,返回和为该整数的数组中的两个值的下标。ps:找到其中一个解即可,不使用相同数字两次。
思路:把数组数值和下标反过来存在unordered_map里,遍历数组,寻找两者差是否存在,直接判断m.count(t) && m[t] != i
[unordered_map认识](http://classfoo.com/ccby/article/S3XoG)
Solution:
class Solution { public:
vector twoSum(vector& nums,int target) {
unordered_map<int, int> m;
vector<int> res;
for (int i = 0; i < nums.size(); ++i) {
m[nums[i]] = i;
}
for (int i = 0; i < nums.size(); ++i) {
int t = target - nums[i];
if (m.count(t) && m[t] != i) {
res.push_back(i);
res.push_back(m[t]);
break;
}
}
return res;
}
};
网友评论