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 };

 

posted @ 2022-03-23 19:39  北原春希  阅读(40)  评论(0)    收藏  举报