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].
C++解法:
/*
* @lc app=leetcode id=1 lang=cpp
*
* [1] Two Sum
*
* 思路:将数组元素存到哈希表中,依次查找数组中的数,与目标和作差
* 并在哈希表中查询是否存在,存在则返回两者下标
*
*/
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
unordered_map<int, int> indices;//存储数组元素值和下标的哈希表
for (int i = 0; i < nums.size(); i++)//循环遍历数组
{
/* code */
if (indices.find(target - nums[i]) != indices.end())//如果差值存在(不存在返回的是末尾)
{
/* code */
return {indices[target - nums[i]], i};
}
indices[nums[i]] = i;
}
return {};
}
};