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();

相关推荐
还是奇怪4 小时前
Simon Willison 用 DSPy 优化 Datasette Agent 提示词:提示工程正在变成可测试的软件工程
java·开发语言·软件工程
zfoo-framework4 小时前
1.ansible安装 2.虚拟机克隆
java
码上解惑4 小时前
从 Dify 工作流说起:常用节点怎么选、怎样组合?
java·人工智能·ai·agent·dify·智能体·spring ai
稚南城才子,乌衣巷风流4 小时前
ST 表(Sparse Table)算法详解:原理、实现与应用
算法
hold?fish:palm4 小时前
9 找到字符串中所有字母异位词
c++·算法·leetcode
Sw1zzle5 小时前
算法入门(六):贪心算法 - 基础入门(Leetcode 121/455/860/376/738)
算法·leetcode·贪心算法
青山木5 小时前
Hot 100 --- 岛屿数量
java·数据结构·算法·leetcode·深度优先·广度优先
不会就选b5 小时前
算法日常・每日刷题--<归并排序>1
数据结构·算法
程序员-珍5 小时前
报错下载android sdk失败
android·java
糖果店的幽灵5 小时前
langgraph分支之 - 动态分支(Dynamic Branch)
java·前端·javascript·人工智能·langgraph