两数之和

题目:

求两数之和

解法-哈希表

思路:

1.
2.
3.

复杂度:

  • 时间复杂度:
  • 空间复杂度:

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class Solution
{
private:
/* data */
public:
vector<int> twoSum(vector<int>& nums, int target)
{
unordered_map<int,int> record;

for(int i = 0;i<nums.size();i++)
{
auto iter = record.find(target-nums[i]);
if(iter != record.end())
{ //找到了
//返回值,和索引
return {iter->second,i};
}
else{
record.insert({nums[i],i});
}
}
return {};
}
};

语法小点:

  1. map迭代器的使用:
    • 迭代器 iter 指向映射中的一个元素,我一直理解为一个指针,暂时没有出现问题
    • iter->first 访问的是键(key)部分。
    • iter->second 访问的是值(value)部分
  2. 解释:return {iter->second,i};
    • 将迭代器 iter->second 和 i 封装成一个“数组”,并返回,先暂时这样理解!