自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 代码随想录算法训练营第三十八天 | 322. 零钱兑换 、 279.完全平方数 、139.单词拆分

conis是物品,总金额就是容量。dp[j]的含义:装满j容量,需要的最少物品。凑足总额为j - coins[i]的最少个数为dp[j - coins[i]],那么只需要加上一个钱币coins[i]即dp[j - coins[i]] + 1就是dp[j](考虑coins[i])。

2025-09-15 07:37:36 94

原创 代码随想录算法训练营第三十七天 | 322 零钱兑换 II 、377 组合总和 Ⅳ 、爬楼梯 (进阶)

求组合数。

2025-09-12 07:16:41 130

原创 代码随想录算法训练营第三十六天 | 1049.最后一块石头的重量II 、494. 目标和、474.一和零

题目链接视频地址这道题其实是尽量让石头分成重量相同的两堆(尽可能相同),相撞之后剩下的石头就是最小的。一堆的石头重量是sum,那么我们就尽可能拼成 重量为 sum / 2 的石头堆。这样剩下的石头堆也是 尽可能接近 sum/2 的重量。那么此时问题就是有一堆石头,每个石头都有自己的重量,是否可以 装满 最大重量为 sum / 2的背包。也就转换为了容量为 sum / 2的背包能装的最大价值是多少?

2025-09-11 07:40:23 306

原创 代码随想录算法训练营第三十五天 | 携带研究材料 、416. 分割等和子集

3、初始化:首先从dp[i][j]的定义出发,如果背包容量j为0的话,即dp[i][0],无论是选取哪些物品,背包价值总和一定为0。dp[0][j],即:i为0,存放编号0的物品的时候,各个容量的背包所能存放的最大价值,即为当背包容量能装下物品0时,dp[0][j]为物品0的价值。(3)那么求dp[i][j] = Math.max(dp[i - 1][j], dp[i - 1][j - weight[i]] + value[i])(1)不放物品 i :背包价值就是 dp[i-1][j]

2025-09-10 08:10:46 393

原创 代码随想录算法训练营第三十四天 | 62.不同路径 、63. 不同路径 II

​。

2025-09-09 08:41:34 309

原创 代码随想录算法训练营第三十二天 | 509. 斐波那契数 、70. 爬楼梯 、746. 使用最小花费爬楼梯

动态规划,英文:Dynamic Programming,简称DP,如果某一问题有很多重叠子问题,使用动态规划是最有效的。动态规划中每一个状态一定是由上一个状态推导出来的,这一点就区分于贪心,贪心没有状态推导,而是从局部直接选最优的。对于动态规划问题,可以拆解为如下五步:确定dp数组(dp table)以及下标的含义确定递推公式dp数组如何初始化确定遍历顺序举例推导dp数组题目链接视频地址第一想法:递归、动态规划实现过程:学后总结: 题目链接视频地址第一想法:动态规划实现过程:学后总结:题目链接

2025-09-08 08:07:09 134

原创 代码随想录算法训练营第三十一天 | 56. 合并区间 、738.单调递增的数字

例如:98,一旦出现strNum[i - 1] > strNum[i]的情况(非单调递增),首先想让strNum[i - 1]--,然后strNum[i]给为9,这样这个整数就是89,即小于98的最大的单调递增整数。从前向后遍历的话,例如339,遇到strNum[i - 1] > strNum[i]的情况,让strNum[i - 1]减一,但此时如果strNum[i - 1]减一了,可能又小于strNum[i - 2]。所以要从后往前遍历。

2025-09-05 07:55:25 122

原创 代码随想录算法训练营第三十天 | 452. 用最少数量的箭引爆气球 、435. 无重叠区间 、763.划分字母区间

对数组进行排序,如果气球重叠了,重叠气球中右边边界的最小值 之前的区间一定需要一个弓箭。比如气球2的左边界是2,在气球1的范围内,它们两个肯定可以用一个弓箭引爆,但是还需要知道气球2和气球3的关系,这时候就需要把气球2的右边界替换为气球1的右边界再去遍历。

2025-09-04 08:02:40 354

原创 代码随想录算法训练营第二十九天 | 134. 加油站 、135. 分发糖果 、860.柠檬水找零 、406.根据身高重建队列

如果总油量减去总消耗大于等于零那么一定可以跑完一圈,说明 各个站点的加油站 剩油量rest[i]相加一定是大于等于零的。每个加油站的剩余量rest[i]为gas[i] - cost[i]。i从0开始累加rest[i],和记为curSum,一旦curSum小于零,说明[0, i]区间都不能作为起始位置,因为这个区间选择任何一个位置作为起点,到i这里都会断油,那么起始位置从i+1算起,再从0计算curSum,最后在判断这一路累加的和是否大于0,如果大于零,返回i。

2025-09-04 07:06:51 442

原创 代码随想录算法训练营第二十八天 | 122.买卖股票的最佳时机 II、55. 跳跃游戏、45.跳跃游戏 II、1005.K次取反后最大化的数组和

贪心的局部最优就是把每天的正利润加起来就是全局最优的最大利润。贪心算法通过累计所有正的两天差值来获取最大利润,是因为它本质上是将整个上涨过程分解为多次微小的交易,从而捕捉到价格每一次上升带来的收益。

2025-09-02 08:55:46 327

原创 代码随想录算法训练营第二十七天 | 455.分发饼干、376. 摆动序列 、53. 最大子序和

先将饼干数组和小孩数组排序。然后从后向前遍历小孩数组,用大饼干优先满足胃口大的,并统计满足小孩数量。

2025-09-01 19:14:31 319

原创 代码随想录算法训练营第二十五天 | 491.递增子序列、46.全排列 、47.全排列 II

题目链接视频地址题目链接视频地址题目链接视频地址

2025-09-01 07:28:43 136

原创 代码随想录算法训练营第二十四天 | 93.复原IP地址 、78.子集、90.子集II

这道题和131分割回文串类似,startIndex是需要的,因为不能重复分割,记录下一层递归分割的起始位置。

2025-08-29 08:10:53 117

原创 代码随想录算法训练营第二十三天 | 39. 组合总和 、40.组合总和II 、131.分割回文串

只要限制下一次选择的起点,是基于本次的选择,这样下一次就不会选到本次选择同层左边的数。即通过控制 for 遍历的起点,去掉会产生重复组合的选项。

2025-08-28 19:42:04 364

原创 代码随想录算法训练营第二十二天 | 77.组合、216.组合总和III 、17.电话号码的字母组合

可以抽象为树形结构(n叉树)

2025-08-27 18:52:05 121

原创 代码随想录算法训练营第二十一天 | 669. 修剪二叉搜索树、108.将有序数组转换为二叉搜索树、 538.把二叉搜索树转换为累加树

从树中可以看出累加的顺序是右中左,所以我们需要反中序遍历这个二叉树,然后顺序累加就可以了。还需要一个pre指针记录当前遍历节点cur的前一个节点,这样才方便做累加。

2025-08-26 18:49:57 258

原创 代码随想录算法训练营第二十天 | 235. 二叉搜索树的最近公共祖先、701.二叉搜索树中的插入操作、 450.删除二叉搜索树中的节点

如果给两个节点p和q,当遍历到的节点大于p和q,那p和q一定在它的左子树。如果遍历到的节点小于p和q,那p和q一定在它的右子树,最后如果遍历到的几点在p和q值的中间的话,那么这个节点一定是他俩的最近公共祖先。

2025-08-25 19:00:29 213

原创 代码随想录算法训练营第十六天 | 513. 找树左下角的值、112. 路径总和、106.从中序与后序遍历序列构造二叉树

左下角的值不一定是左孩子,也可能是右孩子,这道题用层序遍历比递归简单,求最后一个值就可以了。

2025-08-21 18:27:40 304

原创 代码随想录算法训练营第十五天 | 110.平衡二叉树、 257. 二叉树的所有路径、 404.左叶子之和、 222.完全二叉树的节点个数

平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1,求高度用后序,深度用前序遍历。

2025-08-20 19:15:29 153

原创 代码随想录算法训练营第十四天 | 226.翻转二叉树、 101. 对称二叉树、 104.二叉树的最大深度、 111.二叉树的最小深度

这里递归可以用前序遍历或者后序遍历,如果用中序遍历会有右子树不被遍历的情况下产生。

2025-08-19 19:16:59 327

原创 代码随想录算法训练营第十三天 | 递归遍历、层序遍历二叉树

二叉树的前中后序遍历就是利用递归的思路来模拟节点查找的顺序,要注意的点就是函数的传参数和返回值;代码的执行顺序—单层执行顺序;结束条件。

2025-08-18 20:14:38 231

原创 代码随想录算法训练营第十一天 | 150. 逆波兰表达式求值、239. 滑动窗口最大值、347.前 K 个高频元素

首先用map统计元素出现的频率,然后排序,如果全部排序时间复杂度是O(nlogn),这里可以小顶堆,因为要统计最大前k个元素,只有小顶堆每次将最小的元素弹出,最后小顶堆里积累的才是前k个最大元素,时间复杂度是O(nlogk),

2025-08-15 20:04:55 294

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

利用栈的先进后出思想,将括号压进栈中,并在进栈之前判断当前元素是否和栈顶元素匹配,如果匹配则pop栈顶元素,不匹配就推入栈,循环次操作,如果最后栈不为空,那么匹配失败。定义两个栈,用push和pop方法模拟。跟有效的括号思路相似。

2025-08-15 19:29:19 222

原创 代码随想录算法训练营第九天 | 151.翻转字符串里的单词、右旋字符串、实现 strStr()、459.重复的子字符串

用split解题失去了这道题的意义移除多余空格将整个字符串反转将每个单词反转。

2025-08-14 06:16:06 255

原创 代码随想录算法训练营第八天 | 344.反转字符串、541. 反转字符串II、卡码网:54.替换数字

极致解法,不要只用额外的辅助空间,首先扩充数组到每个数字字符替换成 "number" 之后的大小,然后从后向前替换数字字符,也就是双指针法,过程如下:i指向新长度的末尾,j指向旧长度的末尾。

2025-08-12 19:55:57 303

原创 代码随想录算法训练营第七天 | 454.四数相加II 、 383. 赎金信、 15. 三数之和 、18. 四数之和

首先定义 一个unordered_map,key放a和b两数之和,value 放a和b两数之和出现的次数。遍历大A和大B数组,统计两个数组元素之和,和出现的次数,放到map中。定义int变量count,用来统计 a+b+c+d = 0 出现的次数。再遍历大C和大D数组,找到如果 0-(c+d) 在map中出现过的话,就用count把map中key对应的value也就是出现次数统计出来。最后返回统计值 count 就可以了。

2025-08-12 19:31:51 382

原创 代码随想录算法训练营第六天| 242.有效的字母异位词 、349. 两个数组的交集 、202. 快乐数、1. 两数之和

用hash表存储对应字母出现过的频率,另一个数组的元素出现在hash表中就--,最后如果hash表中出现不等于0的值,那就不是有效的字母异位词。

2025-08-11 20:49:48 416

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

快慢指针差这种方式真的太聪明了。如果要删除倒数第n个节点,让fast移动n步,然后让fast和slow同时移动,直到fast指向链表末尾。删掉slow所指向的节点就可以了。

2025-08-09 09:14:24 375

原创 代码随想录算法训练营第三天| 203.移除链表元素 、206.反转链表

看过了文章和视频后,知道了我这样的实现方式在行为上还是不一致的,其实只要把pre设为虚拟头节点再遍历就能很好的解决这个问题。

2025-08-08 07:08:10 253

原创 代码随想录算法训练营第二天| 209.长度最小的子数组、 59.螺旋矩阵II

滑动窗口,就是不断的调节子序列的起始位置和终止位置,从而得出我们想要的结果,当sum值累加的过程中发现小于target,那就向右移动右指针,当sum值大于target的时候,就要一直向右指针移动左指针,因为这区间的和加起来可能还大于target。

2025-08-07 18:54:28 172

原创 代码随想录算法训练营第一天| 704. 二分查找、27. 移除元素、977. 有序数组的平方

看完文章和视频后,明确了二分法的具体查找方案数组为有序数组,同时数组中无重复元素,因为一旦有重复元素,使用二分查找法返回的元素下标可能不是唯一的,这些都是使用二分法的前提条件。明确区间和缩小范围:[left, right]—还是[left, right)

2025-08-06 18:34:50 393

空空如也

空空如也

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

TA关注的人

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