Two Sum 题解

2017-06-04  本文已影响0人  BookThief

题目描述

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].

代码及注释

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

分析

上一篇下一篇

猜你喜欢

热点阅读