//class Solution {
//public:
//vector<int> twoSum(vector<int>& nums, int target) {
unordered_map<int,int> m;
for (int i = 0; i < nums.size(); i++){
int curr_value = nums[i];
if (m.find(curr_value) != m.end()){
return {m[curr_value], i};
}
m[target - curr_value] = i;
}
return {};
}
};
1.unordered_map
nums 2 3 8 6
9-nums 7 6 1 3
然后 m[7]=0 m[6]=1 m[1]=2 m[3]=3
如果后续发现nums[i]=6就可以迅速访问到之前出现的3的下标
2.find
寻找nums[i]这个数在m里面有没有定义过