1. Two Sum
程序员文章站
2024-02-17 12:38:04
...
题意
给定一个数组和一个数,问数组里哪两个数相加之和等于这个数。
思路
开两个map,一个map记录某个数是否存在,一个map记录这个数的位置在哪里,找到之后return即可,时间复杂度O(nlogn)
代码
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
map<int, int> isExist, pos;
vector<int> res;
for (int i = 0; i < nums.size(); i++)
{
if (isExist[target - nums[i]])
{
res.push_back(pos[target - nums[i]]);
res.push_back(i);
}
isExist[nums[i]] = 1;
pos[nums[i]] = i;
}
return res;
}
};