1. 两数之和

Posted baboon

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1. 两数之和相关的知识,希望对你有一定的参考价值。

题目描述

leetcode - 1:https://leetcode-cn.com/problems/two-sum/

技术图片

解题关键

  • hashmap的使用

碎碎念

题目比较简单,暴力过很容易,不过借助hash可以降低时间复杂度,但是增加了空间的消耗。学习了hashmap的使用 key:value

  • 定义 map<int, int> mArr,第一个是key的类型,第二个是value的类型 mArr[key] = value
  • 其中map的 find 方法在找不到的情况下,通过 .end() 来判断有没有找到 mArr.find(x)!=mArr.end()
  • map的 mArr.find(x) 方法得到的是一个 迭代器 ,通过 ->first 得到 key->second 得到 value

代码

  • 时间复杂度O(N)
  • 空间复杂度O(N)
    vector<int> twoSum(vector<int>& nums, int target) {
        map<int, int> mArr;    
        int i=0;
        for(i=0;i<nums.size();i++){
            mArr[nums[i]]=i;
        }
        for(i=0;i<nums.size();i++){
            if(mArr.find(target-nums[i])!=mArr.end() && i!=mArr.find(target-nums[i])->second)
                return {i,mArr.find(target-nums[i])->second};
        }
        return {};
    }

以上是关于1. 两数之和的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode:两数之和

LeetCode第5天 - 283. 移动零 | 167. 两数之和 II - 输入有序数组

数组练习题:两数之和三数之和四数之和

LeetCode 1两数之和

LeetCode——1.两数之和

两数之和