码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode 1. 两数之和 Two Sum (Easy)

时间:2020-05-18 20:57:28      阅读:50      评论:0      收藏:0      [点我收藏+]

标签:map   就是   个数   整数   假设   复杂   two sum   targe   数组   

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。

你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。

技术图片

来源:力扣(LeetCode)

一次哈希表遍历法。

用 HashMap 存储数组元素和索引的映射,在访问到 nums[i] 时,判断 HashMap 中是否存在 target - nums[i],如果存在说明 target - nums[i] 所在的索引和 i 就是要找的两个数。该方法的时间复杂度为 O(N),空间复杂度为 O(N),使用空间来换取时间。

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        
        map<int, int> hashMap;
        vector<int> ret(2, -1);
        for (int i = 0; i < nums.size(); ++i)
        {
            //存在该键值
            if (hashMap.count(target - nums[i]) == 1)
            {
                ret[0] = hashMap[target - nums[i]];
                ret[1] = i;
                break;
            }
            hashMap[nums[i]] = i;
        }
        return ret;
    }
};

 

LeetCode 1. 两数之和 Two Sum (Easy)

标签:map   就是   个数   整数   假设   复杂   two sum   targe   数组   

原文地址:https://www.cnblogs.com/ZSY-blog/p/12912726.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!