LeetCodeHot100——1.两数之和(详细解答)

我接下来要为大家分享一下我对于算法题目的理解,希望与大家交流,提升自己的算法能力,欢迎大家一起来交流。

题目链接在这里:1. 两数之和 - 力扣(LeetCode)

这个题暴力的解法是非常简单的,作为一道入门题目,我们只需要进行一次循环附加一次内循环,外层负责遍历,内层负责再次遍历寻找是否有值满足内外层指定的两个值之和是否等于target就好了。

但是这种解法过于简单,没法体现我们的code能力,所以我为大家介绍下面这种解法:

我们想一想我们的主要思想就是要查找两个值,和为target的两个值,对于查找而言,我们最常见的最好用的数据结构就是HashMap了,两次循环我们可以把它变成一次搭配HashMap进行配对查找,循环遍历外层的同时,同时向HashMap中添加元素和对应的下标,答案是两个值,在遍历到第一个值的时候我们直接将它放入map中,因为在每次遍历的时候我们都会检查之前进入到Map里的值有没有我们想要的,也就是和当前遍历到的值相加等于target的(map中存在target-当前的值的key),所以在第二个值的时候我们就可以直接返回结果了哈。

java 复制代码
class Solution {
    public int[] twoSum(int[] nums, int target) {
        Map<Integer, Integer> map = new HashMap<>();
        for (int i = 0; i < nums.length; i++) {
            if (map.containsKey(target - nums[i])) {
                return new int[]{map.get(target - nums[i]), i};
            }
            map.put(nums[i], i);
        }

        return null;
    }
}

这里要记住一些java中常见集合类的方法:

Set:加入元素add(),删除元素remove(),查看是否存在contains()

Map:加入元素put(),删除元素remove(),查看是否存在key:containsKey(),查看是否存在value:containsValue

List:加入元素add(),删除元素remove(),修改指定位置元素set(index,newVal),获取指定下标的值get(),获取指定值的下标indexOf();

Deque:入队offer(),出队poll(),模仿栈:入栈:push(),出栈:pop(),查看栈顶peek();

相关推荐
姜鱼问生10 分钟前
Nginx gzip 压缩:一个配置让页面加载快 3 倍
后端·算法·架构
badhope10 分钟前
Spring AI Alibaba停更:Java程序员的信任,还能被辜负几次?
java·spring
不会就选b15 分钟前
算法日常・每日刷题--<动态规划>23
算法·动态规划
const_qiu17 分钟前
第一章 1.1-1.2:基础模型调用与 TypeScript 入门 —— Java 开发者的视角
java·javascript·typescript
m4Rk_20 分钟前
【论文阅读】Agent 记忆机制(99):PrisMem——从整体分数搜索走向能力驱动的记忆自进化
论文阅读·人工智能·学习·开源·github
Wang's Blog22 分钟前
Java 项目实战: 交友项目 - Dubbo 负载均衡策略与实战验证
java·dubbo·交友
SL_staff26 分钟前
销售知识库7天落地实践:面向业务侧的零代码嵌入方案
java·开源·产品
GreatSQL社区36 分钟前
主从复制SQL线程中断——字符集砸出的坑
java·数据库·算法
Wang's Blog1 小时前
Java 项目实战: 交友项目 - 入门案例:服务提供者搭建总结
java·交友
hudd6681 小时前
JavaEE 初阶 - 多线程(进阶)
java·开发语言·java-ee