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];
相关推荐
weixin_3077791316 分钟前
C++代码实现MATLAB中的dlarray函数功能
开发语言·c++·算法·matlab
hetao17338376 小时前
2026-10-03~04 hetao1733837 的刷题记录
c++·算法
Zootopia6266 小时前
飞行力学知识梳理1|飞行性能与稳定性
人工智能·python·算法·机器学习·无人机·学习方法·信息与通信
longlongzihan6 小时前
从LeetCode 70. 爬楼梯看动态规划:如何精准推导状态转移方程?
c++·算法·leetcode·动态规划
2601_960356387 小时前
2027校招采购岗解析:数学基础如何迁移到需求预测、成本与供应商分析
人工智能·算法
h_a_o777oah8 小时前
【树论】树链剖分:将树形结构转化为线性结构以处理树上路径问题(洛谷 P3384 附C++代码模板)
数据结构·算法·线段树·acm·树链剖分·树论·重链剖分
HEJOO98 小时前
指针的算术运算详解
java·数据结构·算法
Coder-magician8 小时前
《代码随想录》刷题打卡day47:并查集-part01
数据结构·算法·图论
垆边人似月.8 小时前
VLAN 资源池(100~200 分档)
数据结构·算法
潼心1412o9 小时前
C++初阶(长期更新)第6讲:类和对象(下)
开发语言·c++·算法