题解 | 两数之和
两数之和
https://www.nowcoder.com/practice/c4a4f030ca374d9bb9df5c0bdf388626
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums int整型vector
* @param target int整型
* @return int整型vector
*/
// 这个题用到的映射应该是下标和值的映射
// 可以用两个哈希表 一个用来通过下标找到值 另外一个通过值找到下标 都是O(1)的时间复杂度
// 注意哈希表的count 还有find等操作都是基于键的 不是基于值的
vector<int> twoSum(vector<int>& nums, int target) {
unordered_map <int,int>mp1;
unordered_map <int,int>mp2;
int len=nums.size();
int num1;
int num2;
for(int i=0;i<len;i++)
{
mp1[i+1]=nums[i];
mp2[nums[i]]=i+1;
}
for(int i=0;i<len;i++)
{
if(mp2.count(target-nums[i])==1)
{
num1=mp2[nums[i]];
num2=mp2[target-nums[i]];
break;
}
}
vector<int>res;
res.push_back(num1);
res.push_back(num2);
return res;
}
};