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

Posted zsy-blog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 1. 两数之和 Two Sum (Easy)相关的知识,希望对你有一定的参考价值。

给定一个整数数组 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)的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 1. Two Sum (两数之和)

LeetCode 力扣1. Two Sum 两数之和 Java 解法

LeetCode 力扣1. Two Sum 两数之和 Java 解法

[Leetcode] two sum 两数之和

leetcode 1. 两数之和(Two Sum)

leetcode刷题1:两数之和two_sum