LeetCode: 1. Two Sum

后面会补上之前刷过却没写题解的题目。

题目描述

Given an array of integers, return indices of the two numbers such that they add up to a specific target.

You may assume that each input would have exactly one solution, and you may not use the same element twice.

Example:

Given nums = [2, 7, 11, 15], target = 9,
Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].

解题思路

map 记录数值和索引的关系,在遍历 nums 时, 查找之前是否出现过 target - nums[i]

AC 代码

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        unordered_map<int, int> numIdxMap;
        for(size_t i = 0; i < nums.size(); ++i)
        {
            if(numIdxMap.find(target - nums[i]) != numIdxMap.end())
            {
                return {numIdxMap[target-nums[i]], i};
            }

            numIdxMap[nums[i]] = i;
        }
        return {};
    }
};