Leetcode:1.两数之和

代码随想录第六天 2023.7.17

 题目链接:1. 两数之和 - 力扣(Leetcode)https://leetcode.cn/problems/two-sum/

代码如下:

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        std::unordered_map<int,int> map;
        for(int i=0;i<nums.size();i++){
            auto iter=map.find(target-nums[i]);
            if(iter!=map.end()){
                 return{iter->second,i};
            }
            map.insert(pair<int,int>(nums[i],i));
        }
        return {};
    }
};

 注意:

1.map由  map<key,value> 组成,最重要的是掌握语法的格式;
2.std::map<X, Y>实际储存了一串std::pair<const X, Y>
iter.first会得到key,
iter.second会得到value。
这等同于it->firstit->second
3.C++ 赋予 auto 关键字新的含义,使用它来做自动类型推导。也就是说,使用了 auto 关键字以后,编译器会在编译期间自动推导出变量的类型,这样我们就不用手动指明变量的数据类型了。

auto 关键字基本的使用语法如下:
auto name = value;
name 是变量的名字,value 是变量的初始值。
4.在本题中用map存储遍历过的元素,当遍历到一个新的位置时,寻找对应的元素是否出现,比如遍历到2时寻找元素7是否出现,如果出现则为遍历过,用key存放元素,用value值存放该元素的下标
5.
if(iter != map.end())
  该语句的含义是找map这个序列中的iter元素,如果序列中所找的这个元素不存在,就会返回map.end();如果返回的不是map.end(),就说明在map序列中找到元素iter;
        iter != map.end()        说明找到了
       iter == map.end()       说明没找到
 6.本题的思路是将第一个数组转化为哈希表,然后再根据第二个数组中每个元素,在哈希表中查找对应的值,如果出现,则说明找到;未出现,再把他加入哈希表中
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值