Two Sum

作者: Celesty_E | 来源:发表于2018-01-20 15:35 被阅读0次

题目描述:给定一个数组,和一个int整数,返回和为该整数的数组中的两个值的下标。ps:找到其中一个解即可,不使用相同数字两次。

思路:把数组数值和下标反过来存在unordered_map里,遍历数组,寻找两者差是否存在,直接判断m.count(t) && m[t] != i

[unordered_map认识](http://classfoo.com/ccby/article/S3XoG

Solution:

class Solution { public:

vector twoSum(vector& nums,int target) {

   unordered_map<int, int> m;
    vector<int> res;
    for (int i = 0; i < nums.size(); ++i) {
        m[nums[i]] = i;
    }
    for (int i = 0; i < nums.size(); ++i) {
        int t = target - nums[i];
        if (m.count(t) && m[t] != i) {
            res.push_back(i);
            res.push_back(m[t]);
            break;
        }
    }
    return res;
}

};

相关文章

网友评论

      本文标题:Two Sum

      本文链接:https://www.haomeiwen.com/subject/ojstaxtx.html