两数之和(LintCode)

题目来源:LintCode

原题地址:http://www.lintcode.com/zh-cn/problem/two-sum/

这个题目也是简单难度,我仿造网上的思路,将输入的数据用map存储(因为map查询的速度是线性的,一般而言,可以忽略不计),以输入数据的值作为key,索引作为value;之后遍历输入数据,将目标值减去遍历的那个值,然后在map中查找减去之后的值,如果有对应的就可以返回;若没有,返回空。

代码实现:

    vector<int> twoSum(vector<int> &numbers, int target) 
    {
        // write your code here
        map<int, int> mapNums;
        vector<int> result;
        for (int i = 0;i < numbers.size();++i)
            mapNums[numbers[i]] = i;

        for (int i = 0;i < numbers.size();++i)
        {
            map<int, int>::iterator iter = mapNums.find(target - numbers[i]);
            if (iter != mapNums.end())
            {
                result.push_back(i + 1);
                result.push_back((*iter).second + 1);
                break;
            }
        }
        return result;
    }

猜你喜欢

转载自blog.csdn.net/Asunqingwen/article/details/78301588