核心代码如下:
class Solution {
public:
vector
unordered_map<int, int> hashTable;
for (int i = 0; i < nums.size(); ++i) {
//先查询哈希表中是否存在 目标差值
auto iter = hashTable.find(target - nums[i]);
if (iter != hashTable.end()) {
// 查到则返回:[已存入的下标, 当前下标],必然是两个不同下标
return {iter->second, i};
}
hashTable[nums[i]] = i;
}
return {-1, -1};
}
};
重点:
1.在插入数据时尽量不使用insert,因为insert去重特性,无法处理重复数据,若遇到需要去重的题目再使用insert
2.找一个插入一个,尽最大可能节省空间复杂度