码迷,mamicode.com
首页 > 其他好文 > 详细

LC 1. Two Sum

时间:2019-09-30 20:15:05      阅读:119      评论:0      收藏:0      [点我收藏+]

标签:参考答案   return   twosum   bec   tar   dex   ber   push   目标   

题目介绍

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

标签:参考答案   return   twosum   bec   tar   dex   ber   push   目标   

原文地址:https://www.cnblogs.com/kykai/p/11613923.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!