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. 两数之和的主要内容,如果未能解决你的问题,请参考以下文章