leetcode 两数之和 题解

题目:

给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。

你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。

示例:

给定 nums = [2, 7, 11, 15], target = 9

因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]

个人感觉:

第一次看到这个题目,有点懵逼,因为以前没做过什么题目,第一个想法就是双重循环,然而我以前写过的题目都是有标准输入和输出的,这玩意怎么搞?没办法,看题解吧,把题解写熟练,直到可以熟练地自己写出来。但是仍然有很多地方会出错。

代码:


class Solution  //实不相瞒,这个地方的Solution一个字母都不能错,首字母大写呀
{
public:
       vector<int> twoSum(vector<int>& nums,int target)  //这里的twoSum一个字母都不能错,S大写呀
        {
               unordered_map<int,int> m;//建立一个无序映射
               vector<int> res;//这是我们要返回的结果

               for(int i=0;i<nums.size();i++)//无序映射建立过程
               {
                       m[nums[i]]=i;
                } 
                for(int i=0;i<nums.size();i++)
                {
                        int t=target-nums[i];
                        if(m.count(t)&&m[t]!=i)//这里的count函数是用来确定m中是否有t这个数,若有则m.count值为1,否则m.count为0;
                        {
                            res.push_back(i);
                             res.push_back(m[t]);//这里的push_back()是用来压入数值的
                             break;

                         }
                 }
           return res; //return res 的确是放在这里的,记住别弄错了
         }
         
};

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值