就算告诉我了使用哈希的思路,我写出来的仍然不是最快的,我是一趟循环先安表,再一趟循环找元素
实际上一趟循环就足够:边找边安表 (而且这样还可以免去特判)
如果是边找边安,那每次就是从已有的里头找,如果在后面呢?那就等到循环到后面就行了
有就直接返回,没有就安表
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
unordered_map<int, int> m;
for (int i = 0; i < nums.size(); ++i) {
auto it = m.find(target - nums[i]);
if (it != m.end()) {
return {it->second, i};
} else {
m[nums[i]] = i;
}
}
return {};
}
};