1. 两数之和
做题思路 or 感想 :
1,这种 N 数之和一般是可以用哈希表来解决
2,一般找差就直接用 哈希表自带的 find 去查差值是否存在就好了
3,惊了vector并不自带 find ,平常用的都是algorithm里的,而像 map , set 都是自带 find 的,所以在力扣刷题里要用 find 要搞个 map 或 set
1 class Solution { 2 public: 3 vector<int> twoSum(vector<int>& nums, int target) { 4 unordered_map<int, int>HashMap; //key是值,val是下标 5 for (int i = 0; i < nums.size(); i++) { 6 auto it = HashMap.find(target - nums[i]); //经典用find处理n数和的问题 7 if (it != HashMap.end()) { 8 return {i, (*it).second}; 9 } 10 HashMap.insert(make_pair(nums[i], i)); //这里很有讲究,如果提前先把哈希表打好再进行上面的查找操作,可能会一个元素用两次,在这里再进行打印哈希表可以防止这种问题 11 } 12 return {}; //若无,则还一个空vector 13 } 14 };