
LeetCode 算法刷题
文章平均质量分 71
记录自己的刷题经历。
代码星辰
一名 Java 学习者。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
LeetCode 算法刷题目录 (Java)
保存自己的刷题纪录,方便以后复习。原创 2022-01-13 17:04:14 · 14505 阅读 · 1 评论 -
LeetCode_线段树_中等_307.区域和检索 - 数组可修改
给你一个数组 nums ,请你完成两类查询。其中一类查询要求 更新 数组 nums 下标对应的值;另一类查询要求返回数组 nums 中索引 left 和索引 right 之间( 包含 )的nums元素的 和 ,其中 left原创 2023-11-13 11:00:09 · 444 阅读 · 0 评论 -
LeetCode_多源 BFS_中等_2258.逃离火灾
给你一个下标从 0 开始大小为 m x n 的二维整数数组 grid ,它表示一个网格图。每个格子为下面 3 个值之一:0 表示草地。1 表示着火的格子。2 表示一座墙,你跟火都不能通过这个格子。一开始你在最左上角的格子 (0, 0) ,你想要到达最右下角的安全屋格子 (m - 1, n - 1) 。每一分钟,你可以移动到 相邻 的草地格子。每次你移动 之后 ,着火的格子会扩散到所有不是墙的相邻格子。请你返回你在初始位置可以停留的最多分钟数,且停留完这段时间后你还能安全到达安全屋。原创 2023-11-09 15:37:34 · 264 阅读 · 0 评论 -
LeetCode_并查集_DFS_中等_2316.统计无向图中无法互相到达点对数
给你一个整数 n ,表示一张 无向图 中有 n 个节点,编号为 0 到 n - 1 。同时给你一个二维整数数组 edges ,其中 edges[i] = [ai, bi] 表示节点 ai 和 bi 之间有一条无向边。请你返回无法互相到达的不同点对数目。原创 2023-10-21 15:56:30 · 326 阅读 · 0 评论 -
LeetCode_离散化差分_困难_2251.花期内花的数目
给你一个下标从 0 开始的二维整数数组 flowers ,其中 flowers[i] = [starti, endi] 表示第 i 朵花的花期从 starti 到 endi (都包含)。同时给你一个下标从 0 开始大小为 n 的整数数组 people ,people[i] 是第 i 个人来看花的时间。请你返回一个大小为 n 的整数数组 answer,其中 answer[i] 是第 i 个人到达时在花期内花的数目。原创 2023-09-28 10:21:04 · 319 阅读 · 0 评论 -
LeetCode_BFS_中等_1926.迷宫中离入口最近的出口
给你一个 m x n 的迷宫矩阵 maze (下标从 0 开始),矩阵中有空格子(用 '.' 表示)和墙(用 '+' 表示)。同时给你迷宫的入口 entrance ,用 entrance = [entrance~row~, entrance~col~] 表示你一开始所在格子的行和列。每一步操作,你可以往 上,下,左 或者右移动一个格子。你不能进入墙所在的格子,你也不能离开迷宫。你的目标是找到离 entrance 最近的出口。出口的含义是 maze 边界上的空格子。entrance 格子不算出口。原创 2023-09-26 10:33:25 · 287 阅读 · 0 评论 -
LeetCode_BFS_DFS_中等_841.钥匙和房间
有 n 个房间,房间按从 0 到 n - 1 编号。最初,除 0 号房间外的其余所有房间都被锁住。你的目标是进入所有的房间。然而,你不能在没有获得钥匙的时候进入锁住的房间。当你进入一个房间,你可能会在里面找到一套不同的钥匙,每把钥匙上都有对应的房间号,即表示钥匙可以打开的房间。你可以拿上所有钥匙去解锁其他房间。给你一个数组 rooms 其中 rooms[i] 是你进入 i 号房间可以获得的钥匙集合。如果能进入所有房间返回 true,否则返回 false。原创 2023-09-25 16:40:33 · 294 阅读 · 0 评论 -
LeetCode_二叉树_中等_1372.二叉树中的最长交错路径
请你返回给定树中最长交错路径的长度。原创 2023-09-24 10:34:09 · 348 阅读 · 0 评论 -
LeetCode_二叉树_中等_1448.统计二叉树中好节点的数目
给你一棵根为 root 的二叉树,请你返回二叉树中好节点的数目。「好节点」X 定义为:从根到该节点 X 所经过的节点中,没有任何节点的值大于 X 的值。原创 2023-09-24 10:02:33 · 258 阅读 · 0 评论 -
LeetCode_队列_中等_649.Dota2 参议院
假设每一位参议员都足够聪明,会为自己的政党做出最好的策略,你需要预测哪一方最终会宣布胜利并在 Dota2 游戏中决定改变。输出应该是 “Radiant” 或 “Dire”。原创 2023-09-22 11:12:48 · 307 阅读 · 0 评论 -
LeetCode_拓扑排序_困难_2603.收集树中金币
给你一个 n 个节点的无向无根树,节点编号从 0 到 n - 1 。给你整数 n 和一个长度为 n - 1 的二维整数数组 edges ,其中 edges[i] = [ai, bi] 表示树中节点 ai 和 bi 之间有一条边。再给你一个长度为 n 的数组 coins ,其中 coins[i] 可能为 0 也可能为 1,1 表示节点 i 处有一个金币。一开始,你需要选择树中任意一个节点出发。原创 2023-09-22 10:00:28 · 224 阅读 · 0 评论 -
LeetCode_滑动窗口_中等_1493.删掉一个元素以后全为 1 的最长子数组
给你一个二进制数组 nums ,你需要从中删掉一个元素。请你在删掉元素的结果数组中,返回最长的且只包含 1 的非空子数组的长度。如果不存在这样的子数组,请返回 0。原创 2023-09-20 15:03:30 · 369 阅读 · 0 评论 -
LeetCode_二分搜索_中等_2560.打家劫舍 IV
沿街有一排连续的房屋。每间房屋内都藏有一定的现金。现在有一位小偷计划从这些房屋中窃取现金。由于相邻的房屋装有相互连通的防盗系统,所以小偷不会窃取相邻的房屋 。小偷的窃取能力定义为他在窃取过程中能从单间房屋中窃取的最大金额。给你一个整数数组 nums 表示每间房屋存放的现金金额。形式上,从左起第 i 间房屋中放有 nums[i] 美元。另给你一个整数 k ,表示窃贼将会窃取的最少房屋数。小偷总能窃取至少 k 间房屋。返回小偷的最小窃取能力。原创 2023-09-19 09:48:34 · 395 阅读 · 0 评论 -
LeetCode_贪心算法_简单_605.种花问题
假设有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花不能种植在相邻的地块上,它们会争夺水源,两者都会死去。给你一个整数数组 flowerbed 表示花坛,由若干 0 和 1 组成,其中 0 表示没种植花,1 表示种植了花。另有一个数 n ,能否在不打破种植规则的情况下种入 n 朵花?能则返回 true ,不能则返回 false。原创 2023-09-18 14:07:50 · 436 阅读 · 0 评论 -
LeetCode_字符串_简单_1071.字符串的最大公因子
对于字符串 s 和 t,只有在 s = t + ... + t(t 自身连接 1 次或多次)时,我们才认定 “t 能除尽 s”。给定两个字符串 str1 和 str2 。返回 最长字符串 x,要求满足 x 能除尽 str1 且 x 能除尽 str2。原创 2023-09-17 21:32:35 · 414 阅读 · 0 评论 -
LeetCode_模拟_中等_2596.检查骑士巡视方案
骑士在一张 n x n 的棋盘上巡视。在有效的巡视方案中,骑士会从棋盘的左上角出发,并且访问棋盘上的每个格子恰好一次 。给你一个 n x n 的整数矩阵 grid ,由范围 [0, n * n - 1] 内的不同整数组成,其中 grid[row][col] 表示单元格 (row, col) 是骑士访问的第 grid[row][col] 个单元格。骑士的行动是从下标 0 开始的。如果 grid 表示了骑士的有效巡视方案,返回 true;否则返回 false。原创 2023-09-13 09:32:43 · 296 阅读 · 0 评论 -
LeetCode_拓扑排序_BFS_中等_1462.课程表 IV
你总共需要上 numCourses 门课,课程编号依次为 0 到 numCourses - 1 。你会得到一个数组 prerequisite ,其中 prerequisites[i] = [ai, bi] 表示如果你想选 bi 课程,你必须先选 ai 课程。有的课会有直接的先修课程,比如如果想上课程 1 ,你必须先上课程 0 ,那么会以 [0,1] 数对的形式给出先修课程数对。原创 2023-09-12 10:07:40 · 317 阅读 · 0 评论 -
LeetCode_二分搜索_中等_2594.修车的最少时间
给你一个整数数组 ranks ,表示一些机械工的 能力值 。ranksi 是第 i 位机械工的能力值。能力值为 r 的机械工可以在 r * n^2^ 分钟内修好 n 辆车。同时给你一个整数 cars ,表示总共需要修理的汽车数目。请你返回修理所有汽车最少需要多少时间。原创 2023-09-07 09:43:33 · 336 阅读 · 0 评论 -
LeetCode_二叉搜索树_中等_449.序列化和反序列化二叉搜索树
设计一个算法来序列化和反序列化二叉搜索树。 对序列化/反序列化算法的工作方式没有限制。 您只需确保二叉搜索树可以序列化为字符串,并且可以将该字符串反序列化为最初的二叉搜索树。原创 2023-09-04 10:26:03 · 446 阅读 · 0 评论 -
LeetCode_动态规划_困难_1388.3n 块披萨
请你返回你可以获得的披萨大小总和的最大值。原创 2023-08-18 10:00:32 · 479 阅读 · 0 评论 -
LeetCode_字符串_中等_468.验证 IP 地址
给定一个字符串 queryIP。如果是有效的 IPv4 地址,返回 “IPv4” ;如果是有效的 IPv6 地址,返回 “IPv6” ;如果不是上述类型的 IP 地址,返回 “Neither”。原创 2023-08-17 14:32:26 · 737 阅读 · 0 评论 -
LeetCode_动态规划_中等_1749.任意子数组和的绝对值的最大值
请你找出 nums 中和的绝对值 最大的任意子数组(可能为空),并返回该最大值。原创 2023-08-08 09:52:39 · 478 阅读 · 0 评论 -
LeetCode_贪心算法_中等_763.划分字母区间
给你一个字符串 s 。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。注意,划分结果需要满足:将所有划分结果按顺序连接,得到的字符串仍然是 s。返回一个表示每个字符串片段的长度的列表。原创 2023-08-01 10:18:55 · 1437 阅读 · 0 评论 -
LeetCode_双指针_中等_143.重排链表
给定一个单链表 L 的头节点 head ,单链表 L 表示为:L0 → L1 → … → L~n - 1~ → Ln。请将其重新排列后变为:L0 → Ln → L1 → L~n - 1~ → L2 → L~n - 2~ → …。不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。原创 2023-07-31 09:13:40 · 480 阅读 · 0 评论 -
LeetCode_线段树_困难_2569.更新数组后处理求和查询
给你两个下标从 0 开始的数组 nums1 和 nums2 ,和一个二维数组 queries 表示一些操作。总共有 3 种类型的操作:操作类型 1 为 queries[i] = [1, l, r] 。你需要将 nums1 从下标 l 到下标 r 的所有 0 反转成 1 或将 1 反转成 0 。l 和 r 下标都从 0 开始。操作类型 2 为 queries[i] = [2, p, 0] 。对于 0原创 2023-07-26 09:08:24 · 567 阅读 · 0 评论 -
LeetCode_模拟_中等_874.模拟行走机器人
返回从原点到机器人所有经过的路径点(坐标为整数)的最大欧式距离的平方。(即,如果距离为 5 ,则返回 25)。原创 2023-07-19 09:00:27 · 592 阅读 · 0 评论 -
LeetCode_前缀树_中等_1268.搜索推荐系统
给你一个产品数组 products 和一个字符串 searchWord ,products 数组中每个产品都是一个字符串。请你设计一个推荐系统,在依次输入单词 searchWord 的每一个字母后,推荐 products 数组中前缀与 searchWord 相同的最多三个产品。如果前缀相同的可推荐产品超过三个,请按字典序返回最小的三个。请你以二维列表的形式,返回在输入 searchWord 每个字母后相应的推荐产品的列表。原创 2023-07-15 15:44:45 · 585 阅读 · 0 评论 -
LeetCode_动态规划_中等_1911.最大子序列交替和
给你一个数组 nums ,请你返回 nums 中任意子序列的最大交替和(子序列的下标重新从 0 开始编号)。原创 2023-07-11 09:16:38 · 337 阅读 · 0 评论 -
LeetCode_贪心算法_中等_2542.最大子序列的分数
给你两个下标从 0 开始的整数数组 nums1 和 nums2,两者长度都是 n,再给你一个正整数 k。你必须从 nums1 中选一个长度为 k 的子序列对应的下标。原创 2023-07-08 10:06:14 · 1104 阅读 · 0 评论 -
LeetCode_BFS_中等_1466.重新规划路线
n 座城市,从 0 到 n-1 编号,其间共有 n-1 条路线。因此,要想在两座不同城市之间旅行只有唯一一条路线可供选择(路线网形成一颗树)。去年,交通运输部决定重新规划路线,以改变交通拥堵的状况。路线用 connections 表示,其中 connections[i] = [a, b] 表示从城市 a 到 b 的一条有向路线。今年,城市 0 将会举办一场大型比赛,很多游客都想前往城市 0 。请你帮助重新规划路线方向,使每个城市都可以访问城市 0。返回需要变更方向的最小路线数。原创 2023-07-06 16:27:33 · 429 阅读 · 0 评论 -
LeetCode_链表_中等_445.两数相加 II
给你两个非空链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。你可以假设除了数字 0 之外,这两个数字都不会以零开头。原创 2023-07-03 09:33:26 · 366 阅读 · 0 评论 -
LeetCode_字符串_中等_1657.确定两个字符串是否接近
给你两个字符串,word1 和 word2 。如果 word1 和 word2 接近,就返回 true;否则,返回 false。原创 2023-06-29 10:07:50 · 335 阅读 · 0 评论 -
LeetCode_前缀和_滑动窗口_中等_1004.最大连续1的个数 III
给定一个二进制数组 nums 和一个整数 k,如果可以翻转最多 k 个 0 ,则返回数组中连续 1 的最大个数。原创 2023-06-27 10:09:31 · 301 阅读 · 0 评论 -
LeetCode_双指针_中等_443.压缩字符串
给你一个字符数组 chars ,请使用压缩算法进行压缩。原创 2023-06-24 10:51:47 · 416 阅读 · 0 评论 -
LeetCode_DFS_中等_面试题 16.19.水域大小
有一个用于表示一片土地的整数矩阵 land,该矩阵中每个点的值代表对应地点的海拔高度。若值为0则表示水域。由垂直、水平或对角连接的水域为池塘。池塘的大小是指相连接的水域的个数。编写一个方法来计算矩阵中所有池塘的大小,返回值需要从小到大排序。原创 2023-06-22 10:19:17 · 166 阅读 · 0 评论 -
LeetCode_位运算_中等_201.数字范围按位与
给你两个整数 left 和 right ,表示区间 [left, right] ,返回此区间内所有数字按位与的结果(包含 left 、right 端点)。原创 2023-06-17 10:14:45 · 951 阅读 · 1 评论 -
LeetCode_字符串_简单_67.二进制求和
给你两个二进制字符串 a 和 b,以二进制字符串的形式返回它们的和。原创 2023-06-16 10:54:02 · 818 阅读 · 0 评论 -
LeetCode_动态规划_中等_918.环形子数组的最大和
给定一个长度为 n 的环形整数数组 nums ,返回 nums 的非空子数组的最大可能和。原创 2023-06-14 14:36:44 · 1190 阅读 · 0 评论 -
LeetCode_前缀树_困难_212.单词搜索 II
给定一个 m x n 二维字符网格 board 和一个单词(字符串)列表 words, 返回所有二维网格上的单词 。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母在一个单词中不允许被重复使用。原创 2023-06-11 10:37:42 · 904 阅读 · 0 评论 -
LeetCode_前缀树_中等_211.添加与搜索单词 - 数据结构设计
请你设计一个数据结构,支持添加新单词和查找字符串是否与任何先前添加的字符串匹配。原创 2023-06-11 09:43:15 · 1238 阅读 · 0 评论