[LeetCode 题解]: Two Sum

前言

 

【LeetCode 题解】系列传送门:  http://www.cnblogs.com/double-win/category/573499.html

 

1.题目描述

Given an array of integers, find two numbers such that they add up to a specific target number.

The function twoSum should return indices of the two numbers such that they add up to the target, where index1 must be less than index2. Please note that your returned answers (both index1 and index2) are not zero-based.

You may assume that each input would have exactly one solution.

Input: numbers={2, 7, 11, 15}, target=9
Output: index1=1, index2=2

 

2. 题意

给定一组数字,找到两个元素,使得两者的和满足一个给定的目标值Target。

返回值要求:输出的两个数,index1 必须小于index2.

3. 思路

1. 暴力BF,直接超时

2. hash,用映射 STL: map + vector

4. 解法

class Solution {
public:
    vector<int> twoSum(vector<int> &numbers, int target) {
          map<int ,int> match;
          vector<int> ans;
          ans.clear();
          int i;
          for(i=0;i<numbers.size();i++)
              match[numbers[i]] = i+1;  // 记录位置
          for(i=0;i<numbers.size();i++)
          {

               if(match.find(target - numbers[i]) != match.end()  && i+1 != match[target - numbers[i]])  // map映射
               {
                   ans.push_back(i+1);
                   ans.push_back(match[target-numbers[i]]);
                   break;
               }
          }
          return ans;
    }
};

 

作者:Double_Win

出处: http://www.cnblogs.com/double-win/p/3751836.html 

声明: 由于本人水平有限,文章在表述和代码方面如有不妥之处,欢迎批评指正~

posted @ 2014-05-25 23:19  Double_win  阅读(134)  评论(0编辑  收藏  举报