lintcode-56. Two Sum

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/richenyunqi/article/details/80691118

欢迎访问我的lintcode题解目录https://blog.csdn.net/richenyunqi/article/details/81149577

 

算法设计:

利用散列的方法,建立一个散列表unordered_map<int,int>m,键存储数组中元素的值,值存储数组中元素的索引。遍历整个数组,遍历到某一个值nums[i]时,检查散列表m的键中是否有target-nums[i],如果有说明找到了答案,直接返回;如果没有,将nums[i]作为键,i作为值插入到m中即可。

C++代码:

class Solution {
public:
    /**
     * @param numbers: An array of Integer
     * @param target: target = numbers[index1] + numbers[index2]
     * @return: [index1, index2] (index1 < index2)
     */
    vector<int> twoSum(vector<int> &numbers, int target) {
        // write your code here
        unordered_map<int,int>m;
        for(int i=0;i<numbers.size();++i){
            if(m.find(target-numbers[i])!=m.cend())
                return {m[target-numbers[i]],i};
            m.insert({numbers[i],i});
        }
    }
};

 

 

 

阅读更多 登录后自动展开

扫码向博主提问

日沉云起

用最短的代码,写最快的算法
  • 擅长领域:
  • 算法
去开通我的Chat快问
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页