【剑斩OFFER】算法的暴力美学——两数之和

一、题目描述

二、算法原理

思路:差值 + 哈希表

假设我们遍历到 7 这个数字,此时 7 前面的数字都放到哈希表里面,当然不能把 7 也题目放到这个哈希表里面,原因待会说,如果 target - 7 = 2 存在于这个哈希表中,那么符合题目要求,因为 2 + 7 = 9 ,那为什么不能提前把 7 放到哈希表中呢?答:假设哈希表里面只有一个数字 1,taget = 4,此时刚好遍历到数字 2 ,如果我们提前把 2 放到哈希表里面,那么 target - 2 = 2 ,这个 2 刚好在哈希表里面,此时我们返回的值是错误的,不符合题目要求的。

三、代码实现

cpp 复制代码
class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        unordered_map<int,int> hash;
        for(int i = 0;i < nums.size();i++)
        {
            int cur = target - nums[i];//差值
            if(hash.find(cur) != hash.end()) return {hash[cur],i};//查找差值是否存在
            hash[nums[i]] = i;
        }
        return {};
    }
};
相关推荐
数研小生8 小时前
构建命令行单词记忆工具:JSON 词库与艾宾浩斯复习算法的完美结合
算法·json
芒克芒克8 小时前
LeetCode 题解:除自身以外数组的乘积
算法·leetcode
Python 老手8 小时前
Python while 循环 极简核心讲解
java·python·算法
@Aurora.8 小时前
优选算法【专题九:哈希表】
算法·哈希算法·散列表
爱看科技9 小时前
微美全息(NASDAQ:WIMI)研究拜占庭容错联邦学习算法,数据安全与隐私保护的双重保障
算法
qq_417129259 小时前
C++中的桥接模式变体
开发语言·c++·算法
Hello World . .9 小时前
数据结构:队列
c语言·开发语言·数据结构·vim
YuTaoShao9 小时前
【LeetCode 每日一题】3010. 将数组分成最小总代价的子数组 I——(解法二)排序
算法·leetcode·排序算法
吴维炜11 小时前
「Python算法」计费引擎系统SKILL.md
python·算法·agent·skill.md·vb coding
Σίσυφος190012 小时前
PCL Point-to-Point ICP详解
人工智能·算法