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 {};
}

浙公网安备 33010602011771号