两数之和
- 题目
- 思路
- C++代码
题目
思路
根据题目要求,元素不能重复且不需要排序,我们这里使用哈希表unordered_map。注意题目说了只对应一种答案。
所以我们在循环中,使用目标值减去当前循环的nums[i],得到差值,如果我们在map中能够找到这个差值,就说明存在两个整数的和为目标值。
如果没有找到,就将当前循环的nums[i]以及下标i放入map中,以便后续查找差值。
C++代码
class Solution {
public:vector<int> twoSum(vector<int>& nums, int target) {unordered_map<int, int> map;for (int i = 0; i < nums.size(); i++) {//在map中找差值auto iter = map.find(target - nums[i]);if (iter != map.end()) {//找到即返回两个下标return {iter->second, i};}//没找到将当前的值和下标插入map中map.insert(pair<int, int>(nums[i], i));}return {};}
};