首页 > 其他 > 详细

LeetCode-TwoSum

时间:2015-06-07 12:37:27      阅读:129      评论:0      收藏:0      [点我收藏+]

题目:给一个数组和一个目标数,判断数组中是否有两个数之和等于目标数,如果存在就返回这两个元素的下标。


思路:遍历一遍数组,存下目标数和数组元素之差;利用hash查找是否存在这个差,如果存在就返回数组元素的下标,否则就插入hashtable;如果遍历完成还没有找到就返回空的vector。


代码如下:

vector<int> twoSum(vector<int> &numbers, int target) {
          //Key is the number and value is its index in the vector.
    unordered_map<int, int> hash;
    vector<int> result;
    for (int i = 0; i < numbers.size(); i++) {
        int numberToFind = target - numbers[i];

            //if numberToFind is found in map, return them
        if (hash.find(numberToFind) != hash.end()) {
           
 //+1 because indices are NOT zero based
            result.push_back(hash[numberToFind] + 1);
            result.push_back(i + 1);            
            return result;
        }

            //number was not found. Put it in the map.
        hash[numbers[i]] = i;
    }
    return result;
    }

LeetCode-TwoSum

原文:http://blog.csdn.net/sai1989825/article/details/46399065

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!