
LeetCode
编程远泊
:兴趣是最好的老师,我热爱我现在的选择,学习一直在路上,你我共同成长。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
LeetCode62. 不同路径(day0030_3)
一个机器人位于一个 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?示例 1:示例 2:示例 3:示例 4:提示:题目数据保证答案小于等于 深度优先搜索:dp(动态二维数组):dp(滚动数组):...原创 2022-07-03 10:01:30 · 110 阅读 · 0 评论 -
LeetCode746. 使用最小花费爬楼梯(day0030_2)
给你一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。请你计算并返回达到楼梯顶部的最低花费。示例 1:示例 2:提示:2 ...原创 2022-07-03 09:58:25 · 131 阅读 · 0 评论 -
LeetCode70. 爬楼梯(day0030_1)
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?示例 1:示例 2:提示:1原创 2022-07-03 09:56:22 · 128 阅读 · 0 评论 -
LeetCode509. 斐波那契数(day0029_3)
斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:F(0) = 0,F(1) = 1 F(n) = F(n - 1) + F(n - 2),其中 n > 1 给定 n ,请计算 F(n) 。示例 1:示例 2:示例 3:提示:0 ...原创 2022-07-01 22:34:54 · 166 阅读 · 0 评论 -
LeetCode738. 单调递增的数字(day0029_2)
当且仅当每个相邻位数上的数字 x 和 y 满足 x原创 2022-07-01 22:31:58 · 214 阅读 · 0 评论 -
LeetCode452. 用最少数量的箭引爆气球(day0029_1)
有一些球形气球贴在一堵用 XY 平面表示的墙面上。墙面上的气球记录在整数数组 points ,其中points[i] = [xstart, xend] 表示水平直径在 xstart 和 xend之间的气球。你不知道气球的确切 y 坐标。一支弓箭可以沿着 x 轴从不同点 完全垂直 地射出。在坐标 x 处射出一支箭,若有一个气球的直径的开始和结束坐标为 xstart,xend, 且满足 xstart ≤ x ≤ xend,则该气球会被 引爆 。可以射出的弓箭的数量 没有限制 。 弓箭一旦被射出之后,可以无限地前原创 2022-07-01 22:29:41 · 170 阅读 · 0 评论 -
LeetCode134. 加油站(day0028_3)
在一条环路上有 n 个加油站,其中第 i 个加油站有汽油 gas[i] 升。你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。给定两个整数数组 gas 和 cost ,如果你可以绕环路行驶一周,则返回出发时加油站的编号,否则返回 -1 。如果存在解,则 保证 它是 唯一 的。示例 1:示例 2:提示:gas.length == ncost.length == n1 ...原创 2022-06-30 21:58:01 · 137 阅读 · 0 评论 -
LeetCode56. 合并区间(day0028_2)
以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。示例 1:示例 2:提示:1 ...原创 2022-06-30 21:55:45 · 121 阅读 · 0 评论 -
LeetCode860. 柠檬水找零(day0028_1)
在柠檬水摊上,每一杯柠檬水的售价为 5 美元。顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯。每位顾客只买一杯柠檬水,然后向你付 5 美元、10 美元或 20 美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付 5 美元。注意,一开始你手头没有任何零钱。给你一个整数数组 bills ,其中 bills[i] 是第 i 位顾客付的账。如果你能给每位顾客正确找零,返回 true ,否则返回 false 。示例 1:示例 2:提示:1 ...原创 2022-06-30 21:52:38 · 113 阅读 · 0 评论 -
LeetCode135. 分发糖果(day0027_3)
n 个孩子站成一排。给你一个整数数组 ratings 表示每个孩子的评分。你需要按照以下要求,给这些孩子分发糖果:每个孩子至少分配到 1 个糖果。 相邻两个孩子评分更高的孩子会获得更多的糖果。 请你给每个孩子分发糖果,计算并返回需要准备的 最少糖果数目 。示例 1:示例 2:提示:n == ratings.length1 ...原创 2022-06-27 20:27:47 · 125 阅读 · 0 评论 -
LeetCode45. 跳跃游戏 II(0027_2)
给你一个非负整数数组 nums ,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。假设你总是可以到达数组的最后一个位置。示例 1:示例 2:提示:1 ...原创 2022-06-27 20:25:18 · 108 阅读 · 0 评论 -
LeetCode55. 跳跃游戏(day0027_1)
给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标。示例 1:示例 2:提示:1原创 2022-06-27 20:22:53 · 133 阅读 · 0 评论 -
LeetCode122. 买卖股票的最佳时机 II(day0026_3)
给你一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格。在每一天,你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买,然后在 同一天 出售。返回 你能获得的 最大 利润 。示例 1:示例 2:示例 3:提示:1 ...原创 2022-06-25 15:23:35 · 194 阅读 · 0 评论 -
LeetCode53. 最大子数组和(day0026_2)
给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组 是数组中的一个连续部分。示例 1:示例 2:示例 3:提示:1原创 2022-06-25 15:21:49 · 146 阅读 · 0 评论 -
LeetCode376. 摆动序列(day0026_1)
如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为 摆动序列 。第一个差(如果存在的话)可能是正数或负数。仅有一个元素或者含两个不等元素的序列也视作摆动序列。例如, [1, 7, 4, 9, 2, 5] 是一个 摆动序列 ,因为差值 (6, -3, 5, -7, 3) 是正负交替出现的。相反,[1, 4, 7, 2, 5] 和 [1, 7, 4, 5, 5] 不是摆动序列,第一个序列是因为它的前两个差值都是正数,第二个序列是因为它的最后一个差值为零。 子序列 可以通过从原始序列中删除一些(也可以原创 2022-06-25 15:18:32 · 115 阅读 · 0 评论 -
LeetCode455. 分发饼干(day0025_3)
假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j] 。如果 s[j] >= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。示例 1:示例 2:提示:1 ...原创 2022-06-24 15:18:04 · 108 阅读 · 0 评论 -
LeetCode628. 三个数的最大乘积(day0025_2)
给你一个整型数组 ,在数组中找出由三个数组成的最大乘积,并输出这个乘积。示例 1:示例 2:示例 3:提示:排序:线性扫描:原创 2022-06-24 15:12:17 · 112 阅读 · 0 评论 -
LeetCode234. 回文链表(day0025_1)
给你一个单链表的头节点 ,请你判断该链表是否为回文链表。如果是,返回 ;否则,返回 。示例 1: 输入:head = [1,2,2,1] 输出:true示例 2: 输入:head = [1,2] 输出:false提示:链表中节点数目在范围 内把链表装成数组,判断是否回文:反转后半部分链表:...原创 2022-06-24 15:04:56 · 218 阅读 · 0 评论 -
LeetCode88. 合并两个有序数组(day0024_3)
给你两个按 非递减顺序 排列的整数数组 和 ,另有两个整数 和 ,分别表示 和 中的元素数目。请你 合并 到 中,使合并后的数组同样按 非递减顺序 排列。注意:最终,合并后数组不应由函数返回,而是存储在数组 中。为了应对这种情况, 的初始长度为 ,其中前 个元素表示应合并的元素,后 个元素为 ,应忽略。 的长度为 。示例 1:示例 2:示例 3:提示:双指针:...原创 2022-06-23 21:33:39 · 126 阅读 · 0 评论 -
LeetCode977. 有序数组的平方(day0024_2)
给你一个按 非递减顺序 排序的整数数组 ,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。示例 1:示例 2:提示: 已按 非递减顺序 排序暴力算法:双指针法:原创 2022-06-23 21:30:38 · 159 阅读 · 0 评论 -
LeetCode26. 删除有序数组中的重复项(day0024_1)
给你一个 升序排列 的数组 ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。由于在某些语言中不能改变数组的长度,所以必须将结果放在数组nums的第一部分。更规范地说,如果在删除重复项之后有 个元素,那么 的前 个元素应该保存最终结果。将最终结果插入 的前 个位置后返回 。不要使用额外的空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。判题标准:系统会用下面的代码来测试你的题解:如果所有断言原创 2022-06-23 21:27:06 · 197 阅读 · 0 评论 -
LeetCode37. 解数独(day0023_3)
编写一个程序,通过填充空格来解决数独问题。数独的解法需 遵循如下规则:数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图) 数独部分空格内已填入了数字,空白格用 '.' 表示。示例 1:提示:board.length == 9board[i].length == 9board[i] [j]是一位数字或者 '.'题目数据 保证 输入数独仅有一个解...原创 2022-06-22 17:55:53 · 91 阅读 · 0 评论 -
LeetCode51. N 皇后(day0023_2)
按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案。每一种解法包含一个不同的 n 皇后问题 的棋子放置方案,该方案中 'Q' 和 '.' 分别代表了皇后和空位。示例 1:示例 2:提示:1 ...原创 2022-06-22 17:51:03 · 194 阅读 · 0 评论 -
LeetCode47. 全排列 II(day0023_1)
给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。示例 1:示例 2:提示:1原创 2022-06-17 18:31:00 · 110 阅读 · 0 评论 -
LeetCode46. 全排列(day0022_3)
给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。示例 1:示例 2:示例 3:提示:1原创 2022-06-12 10:03:26 · 134 阅读 · 0 评论 -
LeetCode491. 递增子序列(day0022_2)
给你一个整数数组 nums ,找出并返回所有该数组中不同的递增子序列,递增子序列中 至少有两个元素 。你可以按 任意顺序 返回答案。数组中可能含有重复元素,如出现两个整数相等,也可以视作递增序列的一种特殊情况。示例 1:示例 2:提示:1 ...原创 2022-06-11 17:10:13 · 204 阅读 · 0 评论 -
LeetCode90. 子集 II(day0022_1)
给你一个整数数组 nums ,其中可能包含重复元素,请你返回该数组所有可能的子集(幂集)。解集 不能 包含重复的子集。返回的解集中,子集可以按 任意顺序 排列。示例 1:示例 2:提示:1 ...原创 2022-06-10 13:15:01 · 99 阅读 · 0 评论 -
LeetCode78. 子集(day0021_3)
给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。示例 1:示例 2:提示:1原创 2022-06-09 13:52:30 · 128 阅读 · 0 评论 -
LeetCode93. 复原 IP 地址(day0021_2)
有效 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 '.' 分隔。例如:"0.1.2.201" 和 "192.168.1.1" 是 有效 IP 地址,但是 "0.011.255.245"、"192.168.1.312" 和 "192.168@1.1" 是 无效 IP 地址。 给定一个只包含数字的字符串 s ,用以表示一个 IP 地址,返回所有可能的有效 IP 地址,这些地址可以通过在 s 中插入 '.' 来形成。你 不能 重新排序或删除 s 中的任何数原创 2022-06-07 17:07:00 · 96 阅读 · 0 评论 -
LeetCode131. 分割回文串(day0021_1)
给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串 。返回 s 所有可能的分割方案。回文串 是正着读和反着读都一样的字符串。示例 1:示例 2:提示:1原创 2022-06-05 08:49:13 · 165 阅读 · 0 评论 -
LeetCode40. 组合总和 II(day0020_3)
给定一个候选人编号的集合 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用 一次 。注意:解集不能包含重复的组合。示例 1:示例 2:提示:1 ...原创 2022-06-04 11:16:23 · 198 阅读 · 0 评论 -
LeetCode39. 组合总和(day0020_2)
给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。candidates 中的 同一个 数字可以 无限制重复被选取 。如果至少一个数字的被选数量不同,则两种组合是不同的。对于给定的输入,保证和为 target 的不同组合数少于 150 个。示例 1:示例 2:示例 3:提示:1 ...原创 2022-06-03 08:23:41 · 145 阅读 · 0 评论 -
LeetCode17. 电话号码的字母组合(day0020_1)
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例 1: 输入:digits = "23" 输出:["ad","ae","af","bd","be","bf","cd","ce","cf"]示例 2: 输入:digits = "" 输出:[]示例 3: 输入:digits = "2" 输出:["a","b","c"]提示: 0 <原创 2022-05-30 10:16:06 · 108 阅读 · 0 评论 -
LeetCode216. 组合总和 III(day0019_3)
找出所有相加之和为 n 的 k 个数的组合,且满足下列条件:只使用数字1到9 每个数字 最多使用一次 返回 所有可能的有效组合的列表 。该列表不能包含相同的组合两次,组合可以以任何顺序返回。示例 1:输入: k = 3, n = 7输出: [[1,2,4]]解释:1 + 2 + 4 = 7没有其他符合的组合了。示例 2:输入: k = 3, n = 9输出: [[1,2,6], [1,3,5], [2,3,4]]解释:1 + 2 + 6 = 91 ...原创 2022-05-10 16:46:31 · 395 阅读 · 0 评论 -
LeetCode77. 组合(day0019_2)
给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。你可以按 任何顺序 返回答案。示例 1:输入:n = 4, k = 2输出:[ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4],]示例 2:输入:n = 1, k = 1输出:[[1]]提示: 1 <= n <= 20 1 <= k <= n class Soluti...原创 2022-05-05 10:02:45 · 513 阅读 · 0 评论 -
LeetCode108. 将有序数组转换为二叉搜索树(day0019_1)
给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树。高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。示例 1:输入:nums = [-10,-3,0,5,9]输出:[0,-3,9,-10,null,5]解释:[0,-10,5,null,-3,null,9] 也将被视为正确答案:示例 2:输入:nums = [1,3]输出:[3,1]解释:[1,null,3] 和 [3,1]原创 2022-05-01 10:15:36 · 246 阅读 · 0 评论 -
LeetCode669. 修剪二叉搜索树(day0018_3)
给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树,使得所有节点的值在[low, high]中。修剪树 不应该 改变保留在树中的元素的相对结构 (即,如果没有被移除,原有的父代子代关系都应当保留)。 可以证明,存在 唯一的答案 。所以结果应当返回修剪好的二叉搜索树的新的根节点。注意,根节点可能会根据给定的边界发生改变。示例 1:输入:root = [1,0,2], low = 1, high = 2输出:[1,null,2]...原创 2022-04-28 09:03:54 · 172 阅读 · 0 评论 -
LeetCode450. 删除二叉搜索树中的节点(day0018_2)
给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。一般来说,删除节点可分为两个步骤:首先找到需要删除的节点; 如果找到了,删除它。示例 1:输入:root = [5,3,6,2,4,null,7], key = 3输出:[5,4,6,2,null,null,7]解释:给定需要删除的节点值是 3,所以我们首先找到 3 这个节点,然后删除它。一个正确的答案是...原创 2022-04-22 17:54:49 · 1128 阅读 · 0 评论 -
LeetCode701. 二叉搜索树中的插入操作(day0018_1)
给定二叉搜索树(BST)的根节点 root 和要插入树中的值 value ,将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 输入数据 保证 ,新值和原始二叉搜索树中的任意节点值都不同。注意,可能存在多种有效的插入方式,只要树在插入后仍保持为二叉搜索树即可。 你可以返回 任意有效的结果 。示例 1:输入:root = [4,2,7,1,3], val = 5输出:[4,2,7,1,3,5]解释:另一个满足题目要求可以通过的树是:示例 2:输入:root...原创 2022-04-22 07:15:00 · 117 阅读 · 0 评论 -
LeetCode235. 二叉搜索树的最近公共祖先(day0017_3)
给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]示例 1: 输入: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 8 输出: 6 解原创 2022-04-21 19:15:00 · 110 阅读 · 0 评论