自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 代码随想录DAY50|图论基础、98. 所有可达路径、深度搜索、广度搜索

深搜三部曲和回溯三部曲一致,都是。

2025-04-06 19:48:52 110

原创 代码随想录DAY37|完全背包、518. 零钱兑换 II、377. 组合总和 Ⅳ、70. 爬楼梯 (进阶)

和01背包的区别就是递推公式,如果使用一维数组也可以正序遍历。

2025-02-27 18:13:08 914

原创 代码随想录DAY36|1049. 最后一块石头的重量 II、494. 目标和、474.一和零、01背包总结

*纯 0 - 1 背包 (opens new window)**是求 给定背包容量 装满背包 的最大价值是多少。**416. 分割等和子集 (opens new window)**是求 给定背包容量,能不能装满这个背包。**1049. 最后一块石头的重量 II (opens new window)**是求 给定背包容量,尽可能装,最多能装多少**494. 目标和 (opens new window)**是求 给定背包容量,装满背包有多少种方法。474. 一和零。

2025-02-26 15:20:07 680

原创 代码随想录DAY35|01背包问题、416. 分割等和子集

背包问题只用掌握01背包、完全背包即可,最多加上一个多重背包。动规五部曲:背包容量为j,里面不放物品i的最大价值是dp[i - 1][j]。:背包空出物品i的容量后,背包容量为j - weight[i],dp[i - 1][j - weight[i]] 为背包容量为j - weight[i]且不放物品i的最大价值,那么dp[i - 1][j - weight[i]] + value[i] (物品i的价值),就是背包放物品i得到的最大价值递归公式:;

2025-02-25 10:35:51 1012

原创 代码随想录DAY34|62.不同路径、63. 不同路径 II、343.整数拆分、96.不同的二叉搜索树

定义dp[i][j]表示到这个点有几种走法。由于只能向右或向下走,dp[i][j]是由上面一个和左边一个决定的,因此递推公式:dp[i][j] = dp[i - 1][j] + dp[i][j - 1]。初始化时最上面一行和最左边一行的位置都只有一种走法,因此全部置为1。关于遍历顺序,从左到右一层一层遍历就可以了,这样就可以保证推导dp[i][j]的时候,dp[i - 1][j] 和 dp[i][j - 1]一定是有数值的。

2025-02-18 12:43:26 161

原创 代码随想录DAY32|动态规划、509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯

动规五部曲每次写动态规划题要考虑清楚这五步,特别是每一步为什么这么写,才算掌握了一道题。

2025-02-17 19:09:14 323

原创 代码随想录DAY31|56. 合并区间、738.单调递增的数字、968.监控二叉树

涉及重叠区间问题,首先仍然是将所有元素进行排序。用一个start和end记录当前重叠的区间,如果当前遍历到的元素左边界小于等于区间边界,则更新区间右边界end;如果没有交叉,则将当前区间记录到结果,同时更新start和end。

2025-02-14 16:59:05 140

原创 代码随想录DAY30|452. 用最少数量的箭引爆气球、435. 无重叠区间、763.划分字母区间

为了让气球尽可能重叠,首先对数组进行排列。由于在本题中气球边界值有可能为整形最大值,在写比较规则时要用Integer的比较器而不是直接相减,以防止溢出。第一个气球默认需要一支箭,从第二个气球开始遍历,如果左边界和上一个气球的右边界交叉,那么不需要额外的箭,此时更新上一个气球的右边界值;如果没有交叉说明需要加一支箭。核心思想是重叠气球最小右边界之前需要一支箭。

2025-02-12 18:45:03 373

原创 代码随想录DAY29|134. 加油站、135. 分发糖果、860.柠檬水找零、406.根据身高重建队列

从第一个开始遍历所有加油站,记录当前站点的油量变化量gas[i] - cost[i],并加到currentSum和totalSum上。如果在某一站currentSum<0,证明无法到达当前节点,就要将下一节点i+1当作start节点,并将currentSum置零。遍历完后如果totalSum>0证明可以环游一圈,当前start即为开始节点。本题有以下两个可能的疑问:1.会不会存在0-start中间的某个节点,从那里到当前节点也可以实现currtSum>0?

2025-02-11 23:46:38 415

原创 代码随想录DAY28|122.买卖股票的最佳时机II、55. 跳跃游戏、45.跳跃游戏II、1005.K次取反后最大化的数组和

题目中给出最多持有一股,而且可以当天买入卖出。拆解一下最终利润,假如第 0 天买入,第 3 天卖出,那么利润为:prices[3] - prices[0]。相当于(prices[3] - prices[2]) + (prices[2] - prices[1]) + (prices[1] - prices[0])。也即只要相邻两天有利润就买入卖出,这样最终利润最大。代码要从第二天开始写,因为第二天才能开始有利润。

2025-02-08 18:06:55 237

原创 代码随想录DAY27|贪心算法 455.分发饼干、376. 摆动序列、53. 最大子序和

贪心算法的思路是找到局部最优解,然后求出全局最优解有固定模板。

2025-02-07 23:53:22 571

原创 代码随想录DAY25|491.递增子序列、46.全排列、47.全排列 II、回溯总结

涉及到个数,如在n个元素中选k个,则在for循环中加上i++)涉及到总和,在for循环中加上for(...){return;

2025-02-05 22:44:13 322

原创 代码随想录DAY24|93.复原IP地址、78.子集、90.子集II

本质和分割回文子串一样,不同的地方在于要加上’.'做隔断,结束的条件是有三个断点。增加dotCount用来记录注意代码细节:递归参数中传入StringBuilder便于操作;递归结束条件中要判断最后一段是否合法;判断过程中涉及数值大小的计算,要在每一次循环中判断是否大于255,因为最后的结果可能会很大;每层循环先判断sb的[startIndex,i]子串是否合法,如果合法就进入下一层递归,不合法就break,因为该子串已不合法,再往后加字符也必定不合法,直接break返回上一层递归即可。

2025-02-01 15:31:16 304

原创 代码随想录DAY23|39. 组合总和、40.组合总和II、131.分割回文串

本题注意:1. 数组无重复元素。2. 组合不能重复。3. 同一个数字可以被选择多次。看到可以多次选择同一个数字,要考虑一下0的问题,不过本题给的数都是非零。回溯三部曲。

2025-02-01 14:22:25 896

原创 DAY22回溯算法|77. 组合、216.组合总和III、17.电话号码的字母组合

回溯算法用于解决需要穷举的问题,如排列、组合、N皇后。这类问题用for循环无法完成,而且都涉及到:找完一个要回溯到上一层的状态,因此要撤回。回溯和递归是一体的。回溯右固定的解题模板,和递归类似。

2025-01-24 13:14:36 398

原创 代码随想录DAY21|669. 修剪二叉搜索树、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树

本题要注意一点:如果一个节点小于最小值,其左节点一定仍然小于,但其右节点可能符合条件要返回。因此不能直接删除该节点。递归迭代二刷补上。

2025-01-22 11:41:53 378

原创 代码随想录DAY20|235. 二叉搜索树的最近公共祖先、701.二叉搜索树中的插入操作、450.删除二叉搜索树中的节点

本题和二叉树的最近公共祖先类似,不过要简单些,因为可以用二叉搜索树的性质。同时有一点不一样,本题只需遍历一条边而不是整棵二叉树。迭代法:循环处理root即可。

2025-01-16 20:35:40 345

原创 代码随想录DAY18|530.二叉搜索树的最小绝对差、501.二叉搜索树中的众数、236. 二叉树的最近公共祖先

遇到在二叉搜索树上求什么最值,求差值之类的,都要思考一下二叉搜索树可是有序的,要利用好这一特点。同时要学会在递归遍历的过程中如何记录前后两个指针。递归写法:利用二叉搜索树递增的性质,用一个prev指针记录前一个节点的值(或者前一个结点,这样在递归只用传入一个节点),求出两个的差值,和一个成员变量最小值做对比并更新。

2025-01-15 20:05:01 254

原创 代码随想录DAY17|654.最大二叉树、617.合并二叉树、700.二叉搜索树中的搜索、98.验证二叉搜索树

【代码】代码随想录DAY17|654.最大二叉树、617.合并二叉树、700.二叉搜索树中的搜索、98.验证二叉搜索树。

2025-01-09 19:31:36 117

原创 代码随想录DAY16|513.找树左下角值、112.路径总和、113.路径总和Ⅱ、106.从中序与后序遍历序列构造二叉树

每次传入中序序列和后序序列,返回一个节点值,该节点被上一层接住并连接到左(右)子节点上。终止条件是后序数组长度为0(此时中序也必为空,因为都没有根节点了),那么返回null。如果后序数组长度为1,说明是叶子节点,用该值新建一个节点向上返回即可。**这点很重要,因为传入结果的是paths的引用,直接把paths加进去的话后续的修改会导致结果里的元素都一样。第四步:切割中序数组,切成中序左数组和中序右数组 (顺序别搞反了,一定是先切中序数组)第五步:切割后序数组,切成后序左数组和后序右数组。

2025-01-08 20:22:23 544

原创 代码随想录DAY15|110.平衡二叉树、 257. 二叉树的所有路径、404.左叶子之和、222.完全二叉树的节点个数

定义:平衡二叉树:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。高度:从该节点到叶子节点的最长简单路径边的条数。(力扣中是按节点个数计算)要求高度,所以是后序遍历。

2025-01-07 16:32:28 604

原创 代码随想录DAY14|226翻转二叉树、101对称二叉树、104二叉树最大深度、111二叉树最小深度

每次对二叉树进行处理时,先想清楚该题要用到哪种遍历方式。就比如本题可以用前后序遍历和逐层遍历。前序遍历也可以用但是要麻烦一些。遍历每个节点,将其左右节点翻转即可。可以用前后序遍历和层序遍历。但是不能用,因为会将有的节点翻转两次。递归三部曲用层序遍历的话,处理每一个节点就可以了。也可以用中序遍历,不过要将处理右节点改为处理左节点,因为处理中的时候将二者翻转了。

2025-01-05 23:18:09 561

原创 代码随想录DAY13|二叉树遍历

确定哪些参数是递归的过程中需要处理的,那么就在递归函数里加上这个参数, 并且还要明确每次递归的返回值是什么进而确定递归函数的返回类型。: 写完了递归算法, 运行的时候,经常会遇到栈溢出的错误,就是没写终止条件或者终止条件写的不对,操作系统也是用一个栈的结构来保存每一层递归的信息,如果递归没有终止,操作系统的内存栈必然就会溢出。: 确定每一层递归需要处理的信息。在这里也就会重复调用自己来实现递归的过程。

2025-01-04 13:52:28 368

原创 代码随想录DAY11|150. 逆波兰表达式求值、239. 滑动窗口最大值、347. 前 K 个高频元素

用栈来实现。读到运算符就弹出栈顶的两个数字,将运算结果进栈。读到数字就进栈。最后弹出最后一个就是结果。**注意:**Java中对字符串不能用==比较,应该用equals方法。而数字情况较多,可以放在最后。

2024-12-29 12:39:53 203

原创 代码随想录DAY10|232.用栈实现队列、225. 用队列实现栈、20. 有效的括号、1047. 删除字符串中的所有相邻重复项

来实现栈的模拟。后面对头部进行正常弹出peek操作即可。另一个是按照原顺序push,但是在弹出和peek操作时将最后一个元素放到最前面。

2024-12-28 11:18:37 463

原创 代码随想录DAY09|151.翻转字符串里的单词 、卡码网:55.右旋转字符串|待补充

分为以下几个步骤因为要处理的是start到end前面一个,所以最外层要加=。

2024-12-24 00:04:11 246

原创 代码随想录DAY08| 344.反转字符串、541. 反转字符串II、卡码网:54.替换数字

用双指针解法。

2024-12-22 13:28:43 230

原创 代码随想录DAY07|454.四数相加II、383. 赎金信、15. 三数之和 、18. 四数之和

本题可以用哈希法。因为,不用考虑去重的情况。

2024-12-18 22:14:47 147

原创 代码随想录DAY05|哈希表理论基础 、242.有效的字母异位词、349. 两个数组的交集、202. 快乐数、1. 两数之和

注意以下几个要点。

2024-12-03 20:58:28 437

原创 代码随想录DAY04| 24. 两两交换链表中的节点 、19.删除链表的倒数第N个节点 、面试题 02.07. 链表相交、142.环形链表II

要点。

2024-12-01 17:45:16 256

原创 代码随想录DAY03| 203.移除链表元素、707.设计链表、206.反转链表

【代码】代码随想录DAY03| 203.移除链表元素、707.设计链表、206.反转链表。

2024-11-29 21:19:41 216

原创 代码随想录DAY02| 209.长度最小的子数组、 59.螺旋矩阵II、区间和、开发商购买土地

要求数组的a-b区间和,直接返回p[b]-p[a-1]即可,要注意a=0的情况要分开讨论。给定一个整数数组 Array,请计算该数组在每个指定区间内元素的总和。核心思想就是用另一个数组p来记录。p[n]代表原数组前0-n项元素和。理清逻辑,确定好边界,注意不要细节出错。

2024-11-28 23:28:15 298

原创 代码随想录DAY01|704.二分查找、27.移除元素、977.有序数组的平方

首先要明确区间的定义:所求target的区间是左闭右开还是左闭右闭。再严格按照区间去循环。要处理的两个点:while循环条件和right(或left)变化的方式。

2024-11-21 23:16:44 341 1

原创 数学建模记录

开头不要写详细,留在下面写如果问题二、三题干变动不大,只是参数变了,可以放在一起写。总结段可有可无,不要重复累赘关键词。

2023-09-09 18:47:55 456 1

空空如也

空空如也

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

TA关注的人

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