LC 1. Two Sum

Posted kykai

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LC 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].


参考答案

 1 class Solution 
 2 public:
 3     vector<int> twoSum(vector<int>& nums, int target) 
 4         unordered_map<int,int> hp;
 5         int n = nums.size();
 6         vector<int> res;
 7         
 8         for(int i=0;i<n;i++)
 9             
10             int rest = target - nums[i];
11             if(hp.find(rest) != hp.end())
12                 res.push_back(hp[rest]);
13                 res.push_back(i);
14                 return res;
15             
16             hp[nums[i]] = i;  // map[key] = value -> map[num] = index;
17         
18         return res;
19     
20 ;

补充说明

循环分成三部分:

1.  剩下的 = 目标 - 现在的

2. 检查剩下的是否在map里,在的话,就说明是数组里面的数字,可以返回index了。

3. 将该数字存入map中

有一些要特别注意的是:

map[ key ] = value -> map[num] = index ,以数字为key, 以存入的内容为index。所以,搜索的时候,以key(即数字)为依据,而 index 为我们要的结果。

以上是关于LC 1. Two Sum的主要内容,如果未能解决你的问题,请参考以下文章

[LC] 1214. Two Sum BSTs

LC1 Two Sum

LC 599. Minimum Index Sum of Two Lists

[LC] 170. Two Sum III - Data structure design

[LC] 167. Two Sum II - Input array is sorted

[LC] 1099. Two Sum Less Than K