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 @   北原春希  阅读(34)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
点击右上角即可分享
微信分享提示