1. Two Sum

来源:互联网 发布:水岛宏 知乎 编辑:程序博客网 时间:2024/06/05 21:55

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.

Example:

Given nums = [2, 7, 11, 15], target = 9,Because nums[0] + nums[1] = 2 + 7 = 9,return [0, 1].

UPDATE (2016/2/13):
The return format had been changed to zero-based indices. Please read the above updated description carefully.

Subscribe to see which companies asked this question

分析:

利用map记录前面数的情况,为了区别第一个数,给置了标志,其实应该可以更简单。

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        vector<int> v1;
        map<int,int> m1;
        m1[nums[0]]=-1;
        for(int t=1;t<nums.size();++t)
        {
            if(m1[target-nums[t]]!=0) {
                if(m1[target-nums[t]]==-1)
                v1.push_back(0);
                else
                v1.push_back(m1[target-nums[t]]);
                v1.push_back(t);return v1;}
            else
            {
                m1[nums[t]]=t;
            }
        }
    }
};

0 0
原创粉丝点击