1.两数之和

题目:两数之和 点击跳转

文章目录


题目描述

给你一个数组 nums 和一个目标值 target,找到两个数,使它们相加等于 target,返回它们的下标。

暴力求解

java 复制代码
public int[] twoSum(int[] nums, int target) {
    for (int i = 0; i < nums.length; i++) {
        for (int j = i + 1; j < nums.length; j++) {
            if (nums[i] + nums[j] == target) {
                return new int[]{i, j};
            }
        }
    }
    return new int[0];
}

HashMap(哈希表)

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

class Solution {
    public int[] twoSum(int[] nums, int target) {
        HashMap<Integer, Integer> map = new HashMap<>();

        for (int i = 0; i < nums.length; i++) {
            int need = target - nums[i];

            if (map.containsKey(need)) {
                return new int[]{map.get(need), i};
            }

            map.put(nums[i], i);
        }

        return new int[0];
    }
}

总结

HashMap 到底是什么

可以理解为一个超快的记录本

复制代码
某个数值 -> 它所在的下标
key = 数组里的值
value = 这个值对应的下标

HashMap的定义

java 复制代码
HashMap<Integer, Integer> map = new HashMap<>();

HashMap的操作

放进去

java 复制代码
map.put(2, 0);

把数字 2 和下标 0 记录进去。

查有没有

java 复制代码
map.containsKey(2)

map 里有没有 key=2 这个东西?

如果有,返回 true

如果没有,返回 false

取出来

java 复制代码
map.get(2)

把 key=2 对应的 value 取出来。

长度为0的数组

java 复制代码
return new int[0];
相关推荐
octopus_c41 分钟前
数据结构:堆(Heap)详解
c语言·数据结构·算法
YH55269846 小时前
GPT‑5.6 Sol 原本支持 1M 上下文,Codex 现已放开此前限制,如何看待这次调整?
java·jvm·人工智能·gpt·算法·chatgpt
遥感知识服务8 小时前
从局部阈值、双极化到暗地表剔除:NASA OPERA DSWx-S1全球动态水体算法拆解
大数据·人工智能·深度学习·神经网络·算法·机器学习
晚风醉蝶8 小时前
1-13-TimSort
算法
ZJU_统一阿萨姆8 小时前
【算子开发】算子融合与Softmax_LayerNorm实现
人工智能·算法·语言模型·硬件架构
叩码以求索10 小时前
浅谈:前序遍历反转法求解N叉树的后序遍历
算法
北风toto11 小时前
中缀、前缀、后缀表达式
算法·软件设计师
听取WA声一片(无恶意)11 小时前
CSP-J/CSP-S 深度优先搜索(DFS)完全讲义
c++·算法·深度优先
码流怪侠12 小时前
2026年8月GitHub热榜深度拆解:Agent Skills席卷开源圈,一个“技能包“收割5万星
算法·程序员·github
hold?fish:palm12 小时前
30 两两交换链表中的节点
数据结构·算法·链表