自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 第一天| 第一章 数组part01 数组理论基础、704. 二分查找、27. 移除元素

【代码】第一天| 第一章 数组part01 数组理论基础、704. 二分查找、27. 移除元素。

2023-10-25 20:47:41 399

原创 第四章 字符串part02 28. 实现strStr() 459. 重复的子字符串

题目链接:https://leetcode.cn/problems/repeated-substring-pattern/题目介绍:给定一个非空的字符串s,检查是否可以通过由它的一个子串重复多次构成。

2023-10-11 20:09:47 107

原创 第十章 单调栈 part03 84. 柱状图中最大的矩形

题目链接:https://leetcode.cn/problems/largest-rectangle-in-histogram/个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1。求在该柱状图中,能够勾勒出来的矩形的最大面积。

2023-10-10 14:31:42 90

原创 第十章 单调栈 part02 503.下一个更大元素II 42. 接雨水

题目链接:https://leetcode.cn/problems/next-greater-element-ii/题目介绍:给定一个循环数组nums的下一个元素是nums[0]),返回 nums中每个元素的。数字x的是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。如果不存在,则输出-1。思路:本题与“每日最高温度”的区别在于:本题改成****了成环之后怎么操作呢?这里提供一种思路,凡是成环的题目都可以这么求解。

2023-10-09 21:46:35 109

原创 第十章 单调栈 part01 739. 每日温度 496. 下一个更大元素I

题目链接:https://leetcode.cn/problems/daily-temperatures/submissions/题目介绍:给定一个整数数组,表示每天的温度,返回一个数组answer,其中answer[i]是指对于第i天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用0来代替。思路:(1)为什么要使用单调栈呢?(2)在使用单调栈的时候要明确以下内容:第一、单调栈中存放的是什么元素?第二、什么时候压栈,什么时候弹栈,什么时候记录结果?

2023-10-07 14:49:51 56

原创 第九章 动态规划 part17 647. 回文子串 516. 最长回文子序列 动态规划总结篇

题目链接:https://leetcode.cn/problems/palindromic-substrings/题目介绍:给你一个字符串s,请你统计并返回这个字符串中的数目。是正着读和倒过来读一样的字符串。是字符串中的由连续字符组成的一个序列。具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。思路:注意:本题中强调了DP五部曲:(1)确定dp数组及下标的含义:我们可以这样想:如果在序列的两端,左端下标为i,右端下标为j。

2023-10-06 12:50:18 52

原创 第九章 动态规划 part16(编辑距离专题)583. 两个字符串的删除操作 72. 编辑距离 编辑距离总结篇

都是需要分为两种情况情况一:s[i-1] == t[j-1]情况二:s[i-1]!= t[j-1]最终的结果都是在dp数组的右下角只要是通过dp数组的上方或者左方,也就是不单从左上角得到当前的,最终结果都在dp数组右下角。

2023-10-05 16:27:20 53

原创 第九章 动态规划 part15(编辑距离专题) 392. 判断子序列 115. 不同的子序列

题目链接:https://leetcode.cn/problems/is-subsequence/题目介绍:给定字符串和,判断是否为的子序列。字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。思路:(4)遍历顺序:正序。

2023-10-05 16:26:06 82

原创 第九章 动态规划 part14 1143. 最长公共子序列 1035. 不相交的线 53. 最大子序和

子数组:求解的就是**连续子序列**子序列:没有强调的连续,只要是子序列即可。

2023-10-03 14:35:04 98

原创 第九章 动态规划 part13 300. 最长递增子序列 674. 最长连续递增序列 718. 最长重复子数组

题目链接:https://leetcode.cn/problems/longest-increasing-subsequence/题目介绍:给你一个整数数组 ,找到其中最长严格递增子序列的长度。子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如, 是数组 的子序列。示例 1:思路:(1)确定dp数组及下标含义:(2)确定递推公式:(3)初始化dp数组:(4)确定遍历顺序:代码:二、674. 最长连续递增序列题目链接:h

2023-10-02 16:46:30 89

原创 第九章 动态规划 part12 309. 最佳买卖股票时机含冷冻期 714. 买卖股票的最佳时机含手续费

题目链接:https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-with-cooldown/题目介绍:给定一个整数数组prices,其中第prices[i]表示第*i*天的股票价格。设计一个算法计算出最大利润。**注意:**你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。

2023-09-28 16:21:14 51

原创 第九章 动态规划 part11 123. 买卖股票的最佳时机III 188. 买卖股票的最佳时机IV

题目链接:https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-iii/题目介绍:给定一个数组,它的第i个元素是一支给定的股票在第i天的价格。设计一个算法来计算你所能获取的最大利润。。**注意:**你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。

2023-09-27 16:04:28 182

原创 第九章 动态规划 part10 121. 买卖股票的最佳时机 122. 买卖股票的最佳时机II

(1)在贪心算法章节,讲解了如何用贪心的思路解决“买卖股票的最佳时机II”。这里采用DP,因为买卖股票的最佳时机是贪心的一类题目,均可以通过一套思想来完成。dp[i][0]:表示的是第i天持有该股票,手中的中最大金额。持有该股票不意味着第i天买入该股票,可以是今天买入,也可以是保持前i-1的某一天买入股票的这个状态dp[i][1]:表示的是第i天不持有该股票,手中的最大金额同样,不持有该股票,也不意味着第i天卖出股票,可以是今天卖,也可以是保持前i-1的某一天卖掉股票的这个状态。

2023-09-26 18:26:17 23

原创 第九章 动态规划 part09 198. 打家劫舍 213. 打家劫舍II 337. 打家劫舍III

题目链接:https://leetcode.cn/problems/house-robber/题目介绍:你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,。给定一个代表每个房屋存放金额的非负整数数组,计算你,一夜之内能够偷窃到的最高金额。

2023-09-25 13:12:39 56

原创 第九章 动态规划 part07 70. 爬楼梯 (进阶) 322. 零钱兑换 279. 完全平方数

首先,可以发现这两道题的本质是类似的,都是求装满一个容量为j的背包,所需要最小的物品数量。但是,二者在循环和递推中有一点区别零钱兑换,需要判断当前物品放入背包中,如果背包容量j减去当前物品重量对应的dp数组值为Integer.MAX_VALUE,则跳过此递推公式。而完全平方数就不用判断为什么呢?是因为完全平方数的dp数组,每一个位置的值都会被覆盖掉,虽然初始化的时候均为Integer.MAX_VALUE,但是对于每一个数字,最起码都可以用数字1累加得到,因此就不会有凑不成的情况发生。

2023-09-22 15:57:24 36

原创 第九章 动态规划 part06 完全背包 518. 零钱兑换II 377. 组合总和Ⅳ

01背包问题:(1)使用二维数组:先遍历物品,或者先遍历背包都可以但必须都使用正序遍历(2)使用滚动数组:必须先遍历物品,再遍历背包,并且遍历背包需要倒序(才能保证每个物品进背包一次)完全背包问题:因为可以多次放入背包,所以背包遍历采用正序(1)如果求解的是装满背包的最大价值:先遍历物品,或者先遍历背包都可以(2)如果求解的是装满背包的方法有多少种:如果求解的是组合:先遍历物品,再遍历背包如果求解的是排列:先遍历背包,再遍历物品。

2023-09-21 12:02:08 31

原创 第九章 动态规划 part05 1049. 最后一块石头的重量II 494. 目标和 474. 一和零

分割等和子集、最后一块石头的重量II、目标和三道题都是01背包的应用,他们解决问题的思路可以从三个角度应用01背包的思路:(1)分割等和子集:将给定数组分为两个集合,背包的最大容量是数组总和的一半,判断该数组能否装满这个背包,能装满返回true,否则返回false;如果背包重量之和无法整除2,说明该数组不可能被分割为等和子集(2)最后一块石头的重量II:将给定数组分为两个集合,背包的最大容量是数组总和的一半,尽可能去装满该背包,那么两个背包相减剩下的石头重量就是最小的。

2023-09-20 14:11:41 36

原创 第九章 动态规划 part04 01背包理论基础(二维数组) 01背包理论基础(滚动数组) 416. 分割等和子集

题目链接:https://leetcode.cn/problems/partition-equal-subset-sum/背包问题中,最最最最最最最最最最最最重要的一点就是明白dp数组及下标含义。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。问背包能背的物品最大价值是多少?问背包能背的物品最大价值是多少?

2023-09-19 20:33:15 32

原创 第九章 动态规划 part03 343. 整数拆分 96. 不同的二叉搜索树

题目链接:https://leetcode.cn/problems/integer-break/题目介绍:给定一个正整数n,将其拆分为k个的和(k >= 2),并使这些整数的乘积最大化。返回你可以获得的最大乘积。思路:DP五部曲(1)确定dp数组及下标含义(2)确定递推公式第二:dp[i] = Math.max(j * (i-j), j * dp[i-j], dp[i]);(3)初始化dp数组(4)确定遍历顺序(5)打印dp数组。

2023-09-18 09:34:56 28

原创 第九章 动态规划 part02 62. 不同路径 63. 不同路径 II

题目链接:https://leetcode.cn/problems/unique-paths/题目介绍:一个机器人位于一个m x n网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?思路:DP五部曲:(1)确定dp数组及下标含义(2)确定递推公式(3)dp数组初始化第0行和第0列的节点都要初始化为1(4)遍历顺序(5)打印dp数组。

2023-09-16 13:52:39 23

原创 第九章 动态规划 part01 理论基础 509. 斐波那契数 70. 爬楼梯 746. 使用最小花费爬楼梯

(1)动态规划的基础题目(斐波那契、爬楼梯…)(2)背包问题(3)打家劫舍(4)股票问题(5)子序列问题。

2023-09-15 13:21:36 20

原创 第八章 贪心算法part06 738. 单调递增的数字 968. 监控二叉树

题目链接:https://leetcode.cn/problems/monotone-increasing-digits/题目介绍:当且仅当每个相邻位数上的数字x和y满足x <= y时,我们称这个整数是的。给定一个整数n,返回小于或等于n的最大数字,且数字呈。

2023-09-14 14:43:41 25

原创 第八章 贪心算法part05 ==重叠区间专题== 435. 无重叠区间 763. 划分字母区间 56. 合并区间

题目链接:https://leetcode.cn/problems/non-overlapping-intervals/题目链接:https://leetcode.cn/problems/partition-labels/题目链接:https://leetcode.cn/problems/merge-intervals/我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。返回一个表示每个字符串片段的长度的列表。

2023-09-13 17:06:34 35

原创 第八章 贪心算法part04 860. 柠檬水找零 406. 根据身高重建队列 452. 用最少数量的箭引爆气球

题目链接:https://leetcode.cn/problems/lemonade-change/题目介绍:在柠檬水摊上,每一杯柠檬水的售价为5美元。顾客排队购买你的产品,(按账单bills支付的顺序)一次购买一杯。每位顾客只买一杯柠檬水,然后向你付5美元、10美元或20美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付5美元。注意,一开始你手头没有任何零钱。给你一个整数数组bills,其中bills[i]是第i位顾客付的账。如果你能给每位顾客正确找零,返回true,否则返回。

2023-09-12 13:12:19 22

原创 第八章 贪心算法part03 1005. K次取反后最大化的数组和 134. 加油站 135. 分发糖果

题目链接:https://leetcode.cn/problems/maximize-sum-of-array-after-k-negations/题目介绍:给你一个整数数组nums和一个整数kinums[i]-nums[i]重复这个过程恰好k次。可以多次选择同一个下标i。以这种方式修改数组后,返回数组。

2023-09-11 13:54:29 25

原创 第八章 贪心算法part02 122. 买卖股票的最佳时机II 55. 跳跃游戏 45. 跳跃游戏II

题目链接:https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-ii/题目介绍:给你一个整数数组prices,其中prices[i]表示某支股票第i天的价格。在每一天,你可以决定是否购买和/或出售股票。你在任何时候只能持有股票。你也可以先购买,然后在出售。返回你能获得的利润。思路:。

2023-09-09 09:34:52 25

原创 第八章 贪心算法part01 理论基础 455. 分发饼干 376. 摆动序列 53. 最大子序和

贪心的本质是选择每一阶段的局部最优,从而达到全局最优。并没有固定的套路!!!贪心算法一般分为如下四步:做题的时候,只要想清楚是什么,如果推导出,其实就够了。不用刻意按照以上步骤做题,和回溯、二叉树不一样题目链接:https://leetcode.cn/problems/assign-cookies/题目介绍:假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 ,都有一个胃口值 ,这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 ,都有一个尺寸 。如果 ,我

2023-09-08 17:15:27 32

原创 第七章 回溯算法part06 332. 重新安排行程 51. N皇后 37. 解数独

题目链接:https://leetcode.cn/problems/reconstruct-itinerary/题目介绍:给你一份航线列表tickets,其中表示飞机出发和降落的机场地点。请你对该行程进行重新规划排序。所有这些机票都属于一个从JFK(肯尼迪国际机场)出发的先生,所以该行程必须从JFK开始。如果存在多种有效的行程,请你按字典排序返回最小的行程组合。假定所有机票至少存在一种合理的行程。且所有的机票 必须都用一次 且 只能用一次。

2023-09-07 22:38:50 34

原创 第七章 回溯算法part05 491. 递增子序列 46. 全排列 47. 全排列 II

题目链接:https://leetcode.cn/problems/non-decreasing-subsequences/题目介绍:给你一个整数数组nums,找出并返回所有该数组中不同的递增子序列,递增子序列中。你可以按返回答案。数组中可能含有重复元素,如出现两个整数相等,也可以视作递增序列的一种特殊情况。

2023-09-07 02:12:44 24

原创 第七章 回溯算法part04 93. 复原IP地址 78. 子集 90. 子集II

题目链接:https://leetcode.cn/problems/restore-ip-addresses/正好由四个整数(每个整数位于0到255之间组成,且不能含有前导0),整数之间用'.'分隔。给定一个只包含数字的字符串s,用以表示一个 IP 地址,返回所有可能的,这些地址可以通过在s中插入'.'来形成。你重新排序或删除s中的任何数字。你可以按顺序返回答案。

2023-09-05 13:16:08 24

原创 第七章 回溯算法part03 39. 组合总和 40. 组合总和II 131. 分割回文串

题目描述返回值一个集合中求组合(需要startIndex)组合[1, n],k个数的组合每种组合中的元素不允许重复递归传参:i+ 1组合总和Icandidates数组(无重复)中所有可以使数字和为 target 的组合数组中的元素可以无限制重复被选取递归传参:i组合总和IIcandidates数组(有重复)中所有可以使数字和为 target 的组合数组中的每个数字在每个组合中只能使用一次。递归传参:i + 1组合总和III[1, 9],和为n的k个数组合每种组合中的元素。

2023-09-04 15:13:01 23

原创 第七章 回溯算法part02 216. 组合总和III 17. 电话号码的字母组合

题目链接:https://leetcode.cn/problems/combination-sum-iii/submissions/题目介绍:找出所有相加之和为n的k返回所有可能的有效组合的列表。该列表不能包含相同的组合两次,组合可以以任何顺序返回。

2023-09-02 16:12:39 28

原创 第七章 回溯算法part01 理论基础 77. 组合

回溯法也可以叫做回溯搜索法,它是一种搜索的方式。回溯是递归的副产品,只要有递归就会有回溯。所以以下讲解中,回溯函数也就是递归函数,指的都是一个函数。

2023-09-01 18:59:59 52 1

原创 第六章 二叉树part09 669. 修剪二叉搜索树 108.将有序数组转换为二叉搜索树 538. 把二叉搜索树转换为累加树

题目链接:https://leetcode.cn/problems/trim-a-binary-search-tree/题目介绍:给你二叉搜索树的根节点root,同时给定最小边界low和最大边界high。通过修剪二叉搜索树,使得所有节点的值在中。修剪树改变保留在树中的元素的相对结构 (即,如果没有被移除,原有的父代子代关系都应当保留)。可以证明,存在。所以结果应当返回修剪好的二叉搜索树的新的根节点。注意,根节点可能会根据给定的边界发生改变。

2023-08-31 13:13:09 18

原创 第六章 二叉树part08 235. 二叉搜索树的最近公共祖先 701.二叉搜索树中的插入操作 450.删除二叉搜索树中的节点

题目链接:https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-search-tree/题目介绍:给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(

2023-08-30 13:53:10 27

原创 第六章 二叉树part07 530.二叉搜索树的最小绝对差 501.二叉搜索树中的众数 236. 二叉树的最近公共祖先

题目链接:https://leetcode.cn/problems/minimum-absolute-difference-in-bst/root。

2023-08-29 13:14:39 48 3

原创 第六章 二叉树part06 654.最大二叉树 617.合并二叉树 700.二叉搜索树中的搜索 98.验证二叉搜索树

题目链接:https://leetcode.cn/problems/maximum-binary-tree/题目介绍:给定一个不重复的整数数组nums。可以用下面的算法从numsnums返回 nums构建的。

2023-08-28 14:36:18 43 1

原创 第六章 二叉树part05 513.找树左下角的值 112. 路径总和 113.路径总和ii 106.从中序与后序遍历序列构造二叉树 105.从前序与中序遍历序列构造二叉树

题目链接:https://leetcode.cn/problems/balanced-binary-tree/题目介绍:思路(递归):代码:(1)迭代法(速通):(2)递归:注意:(1)看完这个代码你会发现,只有左右,没有中,那这个遍历是什么顺序呢?这是因为:在这个遍历的过程中,我们无需处理中间节点的逻辑,只要保证左子树先遍历即可。因为左子树上有满足条件的叶子节点,**“最底层 最左边 节点的值”**就优先在左子树上,否则才会遍历右子树。所以,这里的遍历顺序可以是前 or 中 or 后。

2023-08-27 18:37:58 12

原创 第六章 二叉树part04 110.平衡二叉树 257. 二叉树的所有路径 404.左叶子之和

题目链接:https://leetcode.cn/problems/balanced-binary-tree/题目介绍:给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点的左右两个子树的高度差的绝对值不超过 1。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gEhmaOkY-1692948217787)(E:.STU\【JAVA】\LeetCode\第17天\平衡二叉树示例.png)]

2023-08-25 15:24:05 26

原创 第六章 二叉树part03 104.二叉树的最大深度 559.n叉树的最大深度 111.二叉树的最小深度 222.完全二叉树的节点个数

因此,要特殊处理以下情况:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-v9kVVLVz-1692881189750)(二叉树最小深度.png)]这里如果直接进行下面三行的代码,就会把root节点的到它的左节点认为是最小深度[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KKhz3uC5-1692881189750)(最小深度代码.png)]

2023-08-24 20:47:45 24 1

空空如也

空空如也

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

TA关注的人

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