自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(85)
  • 收藏
  • 关注

原创 LeetCode:198.打家劫舍 && 213.打家劫舍II && 337.打家劫舍 III

同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。给定一个代表每个房屋存放金额的非负整数数组,计算你 在不触动警报装置的情况下 ,今晚能够偷窃到的最高金额。

2023-05-27 18:53:01 59

原创 LeetCode:139.单词拆分

给你一个字符串 s 和一个字符串列表 wordDict 作为字典。请你判断是否可以利用字典中出现的单词拼接出 s。注意:不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。

2023-05-25 16:52:26 113

原创 LeetCode:322. 零钱兑换 && 279.完全平方数

完全平方数 是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。例如,1、4、9 和 16 都是完全平方数,而 3 和 11 不是。计算并返回可以凑成总金额所需的 最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。给你一个整数 n ,返回 和为 n 的完全平方数的最少数量。你可以认为每种硬币的数量是无限的。

2023-05-24 20:38:42 62

原创 LeetCode:518.零钱兑换II && 377. 组合总和 Ⅳ

给你一个由 不同 整数组成的数组 nums ,和一个目标整数 target。请你从 nums 中找出并返回总和为 target 的元素组合的个数。给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0。题目数据保证结果符合 32 位带符号整数。题目数据保证答案符合 32 位整数范围。假设每一种面额的硬币有无限个。

2023-05-23 16:43:22 94

原创 LeetCode:1049.最后一块石头的重量II && 494.目标和 && 474.一和零

有一堆石头,用整数数组 stones 表示。其中 stones[i] 表示第 i 块石头的重量。每一回合,从中选出任意两块石头,然后将它们一起粉碎。假设石头的重量分别为 x 和 y,且 x

2023-05-22 17:38:07 432

原创 LeetCode:416. 分割等和子集

给你一个 只包含正整数 的 非空 数组 nums。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。

2023-05-21 19:51:49 103

原创 LeetCode:343. 整数拆分 && 96.不同的二叉搜索树

给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k >= 2 ),并使这些整数的乘积最大化。返回 你可以获得的最大乘积。

2023-05-21 16:37:43 66

原创 LeetCode:62.不同路径 && 63. 不同路径 II

机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish”)。一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用 1 和 0 来表示。

2023-05-20 17:27:07 269

原创 LeetCode:509. 斐波那契数 && 70. 爬楼梯 && 746. 使用最小花费爬楼梯

给你一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。F(n) = F(n - 1) + F(n - 2),其中 n > 1。每次你可以爬 1 或 2 个台阶。你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。需要 n 阶你才能到达楼顶。给定 n ,请计算 F(n)。

2023-05-20 14:11:11 240

原创 LeetCode:738.单调递增的数字 && 714.买卖股票的最佳时机含手续费 && 968.监控二叉树

整数 fee 代表了交易股票的手续费用。你可以无限次地完成交易,但是你每笔交易都需要付手续费。如果你已经购买了一个股票,在卖出它之前你就不能再继续购买股票了。当且仅当每个相邻位数上的数字 x 和 y 满足 x

2023-05-19 19:05:45 261

原创 LeetCode:435. 无重叠区间 && 763.划分字母区间 && 56. 合并区间

以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi]。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。给定一个区间的集合 intervals ,其中 intervals[i] = [starti, endi]。给你一个字符串 s。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。注意,划分结果需要满足:将所有划分结果按顺序连接,得到的字符串仍然是 s。

2023-05-18 22:49:55 58

原创 LeetCode:860.柠檬水找零 && 406.根据身高重建队列 && 452. 用最少数量的箭引爆气球

在坐标 x 处射出一支箭,若有一个气球的直径的开始和结束坐标为 xstart,xend, 且满足 xstart ≤ x ≤ xend,则该气球会被 引爆。可以射出的弓箭的数量 没有限制。墙面上的气球记录在整数数组 points ,其中points[i] = [xstart, xend] 表示水平直径在 xstart 和 xend之间的气球。返回的队列应该格式化为数组 queue ,其中 queue[j] = [hj, kj] 是队列中第 j 个人的属性(queue[0] 是排在队列前面的人)。

2023-05-17 21:22:10 54

原创 LeetCode:1005.K次取反后最大化的数组和 && 134. 加油站 && 135. 分发糖果

给定两个整数数组 gas 和 cost ,如果你可以绕环路行驶一周,则返回出发时加油站的编号,否则返回 -1。你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升。在一条环路上有 n 个加油站,其中第 i 个加油站有汽油 gas[i] 升。给你一个整数数组 ratings 表示每个孩子的评分。选择某个下标 i 并将 nums[i] 替换为 -nums[i]。请你给每个孩子分发糖果,计算并返回需要准备的 最少糖果数目。每个孩子至少分配到 1 个糖果。

2023-05-17 17:38:27 98

原创 LeetCode:122.买卖股票的最佳时机II && 55. 跳跃游戏 && 45.跳跃游戏II

每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。在每一天,你可以决定是否购买和/或出售股票。你也可以先购买,然后在 同一天 出售。返回到达 nums[n - 1] 的最小跳跃次数。生成的测试用例可以到达 nums[n - 1]。给你一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格。给定一个长度为 n 的 0 索引整数数组 nums。给定一个非负整数数组 nums ,你最初位于数组的 第一个下标。数组中的每个元素代表你在该位置可以跳跃的最大长度。

2023-05-16 21:33:24 77

原创 LeetCode:455.分发饼干 && 376. 摆动序列 && 53. 最大子序和

对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;相反,[1, 4, 7, 2, 5] 和 [1, 7, 4, 5, 5] 不是摆动序列,第一个序列是因为它的前两个差值都是正数,第二个序列是因为它的最后一个差值为零。例如, [1, 7, 4, 9, 2, 5] 是一个 摆动序列 ,因为差值 (6, -3, 5, -7, 3) 是正负交替出现的。给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。

2023-05-15 22:27:10 45

原创 LeetCode:332.重新安排行程 && 51. N皇后 && 37. 解数独

如果存在多种有效的行程,请你按字典排序返回最小的行程组合。每一种解法包含一个不同的 n 皇后问题 的棋子放置方案,该方案中 ‘Q’ 和 ‘.’ 分别代表了皇后和空位。例如,行程 [“JFK”, “LGA”] 与 [“JFK”, “LGB”] 相比就更小,排序更靠前。n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案。

2023-05-15 19:42:06 99

原创 LeetCode:491.递增子序列 && 46.全排列 && 47.全排列 II

给你一个整数数组 nums ,找出并返回所有该数组中不同的递增子序列,递增子序列中 至少有两个元素。你可以按 任意顺序 返回答案。给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列。你可以 按任意顺序 返回答案。数组中可能含有重复元素,如出现两个整数相等,也可以视作递增序列的一种特殊情况。给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。

2023-05-12 22:40:31 62

原创 LeetCode:93.复原IP地址 && 78.子集 && 78.子集II

给定一个只包含数字的字符串 s ,用以表示一个 IP 地址,返回所有可能的有效 IP 地址,这些地址可以通过在 s 中插入 ‘.’ 来形成。例如:“0.1.2.201” 和 “192.168.1.1” 是 有效 IP 地址,但是 “0.011.255.245”、“192.168.1.312” 和 “192.168@1.1” 是 无效 IP 地址。给你一个整数数组 nums ,数组中的元素 互不相同。给你一个整数数组 nums ,其中可能包含重复元素,请你返回该数组所有可能的子集(幂集)。

2023-05-11 19:35:25 98

原创 LeetCode:39. 组合总和 && 40.组合总和II && 131.分割回文串

给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。给定一个候选人编号的集合 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。如果至少一个数字的被选数量不同,则两种组合是不同的。对于给定的输入,保证和为 target 的不同组合数少于 150 个。回文串 是正着读和反着读都一样的字符串。

2023-05-08 22:51:51 48

原创 LeetCode:216.组合总和III && 17.电话号码的字母组合

给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。返回 所有可能的有效组合的列表。该列表不能包含相同的组合两次,组合可以以任何顺序返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。每个数字 最多使用一次。

2023-05-07 22:52:09 71

原创 LeetCode:77.组合(回溯)

给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。你可以按 任何顺序 返回答案。

2023-05-06 21:59:24 92

原创 LeetCode:669. 修剪二叉搜索树 && 108.将有序数组转换为二叉搜索树 && 538.把二叉搜索树转换为累加树

修剪树 不应该 改变保留在树中的元素的相对结构 (即,如果没有被移除,原有的父代子代关系都应当保留)。给出二叉 搜索 树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使每个节点 node 的新值等于原树中大于或等于 node.val 的值之和。所以结果应当返回修剪好的二叉搜索树的新的根节点。高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。节点的左子树仅包含键 小于 节点键的节点。节点的右子树仅包含键 大于 节点键的节点。

2023-05-06 15:52:18 44

原创 LeetCode:235. 二叉搜索树的最近公共祖先 && 701.二叉搜索树中的插入操作 && 450.删除二叉搜索树中的节点

给定二叉搜索树(BST)的根节点 root 和要插入树中的值 value ,将值插入二叉搜索树。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]

2023-05-04 22:12:31 82

原创 LeetCode:530.二叉搜索树的最小绝对差 && 501.二叉搜索树中的众数 && 236. 二叉树的最近公共祖先

百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。给你一个含重复值的二叉搜索树(BST)的根节点 root ,找出并返回 BST 中的所有 众数(即,出现频率最高的元素)。给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值。结点左子树中所含节点的值 小于等于 当前节点的值。结点右子树中所含节点的值 大于等于 当前节点的值。

2023-05-03 22:37:30 118

原创 LeetCode:654.最大二叉树 && 617.合并二叉树 && 700.二叉搜索树中的搜索 && 98.验证二叉搜索树

想象一下,当你将其中一棵覆盖到另一棵之上时,两棵树上的一些节点将会重叠(而另一些不会)。合并的规则是:如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新值;否则,不为 null 的节点将直接作为新二叉树的节点。你需要在 BST 中找到节点值等于 val 的节点。返回以该节点为根的子树。给定二叉搜索树(BST)的根节点 root 和一个整数值 val。递归地在最大值 右边 的 子数组后缀上 构建右子树。创建一个根节点,其值为 nums 中的最大值。返回 nums 构建的 最大二叉树。

2023-05-02 23:18:40 114

原创 LeetCode:513.找树左下角的值 && 112. 路径总和 && 113. 路径总和 II && 106.从中序与后序遍历序列构造二叉树

判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum。给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树。给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。

2023-05-01 23:02:30 61

原创 LeetCode:110.平衡二叉树 && 257. 二叉树的所有路径 && 404.左叶子之和

本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。给定二叉树的根节点 root ,返回所有左叶子之和。给定一个二叉树,判断它是否是高度平衡的二叉树。叶子节点 是指没有子节点的节点。

2023-04-30 01:03:12 48

原创 LeetCode:104.二叉树最大深度 && 111.二叉树的最小深度 && 222.完全二叉树的节点个数

完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明: 叶子节点是指没有子节点的节点。说明:叶子节点是指没有子节点的节点。使用前序遍历(中左右)求的是深度。

2023-04-26 19:23:49 94

原创 LeetCode:102.二叉树的层序遍历

给你二叉树的根节点 root ,返回其节点值的层序遍历。(即逐层地,从左到右访问所有节点)。

2023-04-25 21:03:42 118

原创 LeetCode:144.二叉树的前序遍历 && 94.二叉树的中序遍历 && 145.二叉树的后序遍历

后续遍历是左右中,只需要调整一下前序遍历的代码顺序,就变成中右左的遍历顺序,然后在反转result数组,输出的结果顺序就是左右中了。先将根节点放入栈中,然后将右孩子加入栈,再加入左孩子。出栈的时候就会是中左右的顺序。使用迭代法写中序遍历,借用指针的遍历来帮助访问节点,栈则用来处理节点上的元素。给你一棵二叉树的根节点 root ,返回其节点值的后序遍历。给你二叉树的根节点 root ,返回它节点值的前序遍历。给定一个二叉树的根节点 root ,返回它的中序遍历。

2023-04-25 20:56:01 50

原创 LeetCode:347.前K个高频元素 && 239.滑动窗口最大值

给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。来源:力扣(LeetCode)

2023-04-19 20:35:09 120

原创 LeetCode:20.有效的括号 && 1047.删除字符串中的所有相邻重复项 && 150.逆波兰表达式求值

链接:https://leetcode.cn/problems/remove-all-adjacent-duplicates-in-string。链接:https://leetcode.cn/problems/evaluate-reverse-polish-notation。给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。给你一个字符串数组 tokens ,表示一个根据 逆波兰表示法 表示的算术表达式。有效的算符为 ‘+’、‘-’、‘*’ 和 ‘/’。

2023-04-17 20:24:19 47

原创 LeetCode:232.用栈实现队列 && 225.用队列实现栈

请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。请你仅使用两个栈实现先入先出队列。来源:力扣(LeetCode)来源:力扣(LeetCode)做两个栈,输入栈和输出栈。

2023-04-15 22:29:01 107

原创 LeetCode:28.找出字符串中第一个匹配项的下标 && 459.重复的子字符串

给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。如果 needle 不是 haystack 的一部分,则返回 -1。链接:https://leetcode.cn/problems/find-the-index-of-the-first-occurrence-in-a-string。给定一个非空的字符串 s ,检查是否可以通过由它的一个子串重复多次构成。来源:力扣(LeetCode)

2023-04-15 20:19:13 89

原创 LeetCode:344.反转字符串 && 剑指 Offer05.替换空格 && 剑指 Offer58 - l.翻转单词顺序 && 剑指 Offer58 - ll.左旋转字符串

字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。链接:https://leetcode.cn/problems/zuo-xuan-zhuan-zi-fu-chuan-lcof。链接:https://leetcode.cn/problems/fan-zhuan-dan-ci-shun-xu-lcof。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。

2023-04-13 22:30:37 53

原创 LeetCode:454.四数相加ll && 383.赎金信 && 15.三数之和 && 18.四数之和

给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i!= k ,同时还满足 nums[i] + nums[j] + nums[k] == 0。将4个数组分成两个大数组,1和2 && 3和4,通过nums1和nums2的每一种和值,去对照nums3和nums4的值,产生1和2 && 3和4之间的对应值,通过键值对的方式,获取value并进行消除运算。链接:https://leetcode.cn/problems/3sum。

2023-04-12 21:33:55 134

原创 LeetCode:242. 有效的字母异位词 && 349.两个数组的交集 && 202.快乐数 && 1.两数之和

给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。来源:力扣(LeetCode)链接:https://leetcode.cn/problems/valid-anagram。

2023-04-11 22:33:02 84

原创 LeetCode:24.两两交换链表中的节点 && 19.删除链表的倒数第N个节点 && 02.07. 链表相交 && 141.环形链表

给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。

2023-04-09 22:16:54 131

原创 StringBuffer 和 StringBuilder

StringBuffer/StringBuilder内都实际上是一个byte[]数组,这个byte[]数组没有被final修饰,StringBuffer/StringBuilder的初始化容量是16,当存满之后会进行扩容,底层调用了数组拷贝的方法System.arraycopy(),所以StringBuilder / StringBuffer适合于使用字符串的频繁拼接操作。

2023-04-07 22:25:07 96

原创 LeetCode:203.移除链表元素 && 206.反转链表 && 707.设计链表

给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点。来源:力扣(LeetCode)链接:https://leetcode.cn/problems/remove-linked-list-elements。

2023-04-07 21:53:22 100

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除