LeetCode[两数之和] java版

java 复制代码
import java.util.HashMap;
import java.util.Map;

class Solution {
    public int[] twoSum(int[] nums, int target) {
        Map<Integer, Integer> map = new HashMap<>();
        for (int i = 0; i < nums.length; i++) {
            int diff = target - nums[i];
            if (map.containsKey(diff)) {
                return new int[] { map.get(diff), i };
            }
            map.put(nums[i], i);
        }
        return new int[] {}; // 理论上不会走到这,因为题目保证有解
    }
}

总结

  1. 哈希表是精髓 :

    它天然支持 数值 → 索引 的映射关系,用起来非常方便。

  2. 遍历时的操作:

    • 对于当前数 num,先计算差值 diff = target - num;

    • 用 containsKey(diff) 判断哈希表里有没有这个"搭档"。

  3. 分两种情况:

    • 如果有 → 说明答案找到了,直接返回 [map.get(diff), i]。

    • 如果没有 → 把当前数存进哈希表,等后面的数来配对。

  4. 核心思想:

    • 先查找,再存储,避免自己和自己配对。

    • 哈希表让查找和存储都变成 O(1),所以整体时间复杂度降为 O(n)。

相关推荐
wuyk5556 小时前
28 搜索引擎索引更新:从 LSM Tree 到布隆过滤器的高效实现
stm32·单片机·嵌入式硬件·算法
我命由我123456 小时前
LRU 缓存淘汰策略
数据结构·redis·学习·mysql·算法·缓存·学习方法
垆边人似月.6 小时前
华为题:合并区间
数据结构·c++·算法
垆边人似月.7 小时前
华为题:滑动窗口最大值
数据结构·c++·算法
2601_965742227 小时前
AI是怎么判断一家本地商家值得推荐的?云南老板看完这篇就懂了
大数据·人工智能·算法·ai·新媒体运营
小O的算法实验室7 小时前
IEEE TAES,基于DQN 辅助的集群无人机自组网约束多目标重构与优化
人工智能·算法
m0_547486667 小时前
《数据结构 (C语言)》期末试卷及答案(10套)2026版
c语言·开发语言·数据结构
_不会dp不改名_7 小时前
leetcode_3727 最大平方交替和
linux·算法·leetcode
信奥卷王7 小时前
[GESP202509 六级] 货物运输(含视频)
算法
余额瞒着我当琳8 小时前
C++算法学习篇5--二分查找法
c++·学习·算法