自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 代码随想录算法训练营第51期第37天 | 完全背包、518. 零钱兑换 II、377. 组合总和 Ⅳ

背包空出物品i的容量后,背包容量为j - weight[i],dp[i][j - weight[i]] 为背包容量为j - weight[i]且不放物品i的最大价值,那么dp[i][j - weight[i]] + value[i] (物品i的价值),就是背包放物品i得到的最大价值。本题呢,dp[i]有几种来源,dp[i - 1],dp[i - 2],dp[i - 3] 等等,即:dp[i - j]首先,如果背包容量j为0的话,即dp[i][0],无论是选取哪些物品,背包价值总和一定为0。

2025-01-29 12:28:50 728

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

1049. 最后一块石头的重量 II1.重点是理解这个01背包,将这道题转换为01背包2.首先,计算所有石头的总重量。我们的目标是找到一种方法,将石头分成两堆,每堆的重量尽可能接近。因为如果能做到这一点,那么两堆石头相互粉碎后剩下的石头重量就会是最小的。3.背包问题转化接下来,我们可以将这个问题转化为一个背包问题。假设有一个背包的容量为,我们要选择一些石头放入背包,使得背包中的石头总重量最接近但不超过。4.动态规划求解后,计算结果。完成动态规划后,我们可以得到容量为的背包能装入的最大石头重量。

2025-01-10 23:43:16 294

原创 代码随想录算法训练营第51期第35天 | 01背包问题基础、01背包问题2: 滚动数组、416. 分割等和子集

背包问题好难啊,前前后后理解了好几次,拖了将近一周,才弄懂了这道题,会用C语言写这道题写写思路吧背包问题总览主要掌握01背包和多重背包,本节主要掌握01背包。

2025-01-05 19:28:17 878

原创 代码随想录算法训练营第51期第34天 | 62.不同路径、63. 不同路径 II、343.整数拆分、96.不同的二叉搜索树

62. 不同路径我好像确实会一点动态规划了,就像这道题,我看了一眼,大概就会写了1.这题用python先试了一下,直接ac2.C语言更多的是学习了二维数组的malloc,学到了动态规划五部曲1.确定dp数组以及下标的含义:dp[i][j]表示到[i, j]这个位置时到达的方法数2.确定递推公式:dp[i][j] = dp[i-1][j] + dp[i][j-1];3.dp数组如何初始化:这里因为只能向右或者向下,所以数组第一排和第一列值都是14.遍历次序:正常遍历二维数组的次序。

2025-01-01 17:37:12 1074

原创 代码随想录算法训练营第51期第32天 | 理论基础、509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯

动态规划:dp,每一个状态都是由上个状态推导出来的,因为我是先写完三道题再看理论的,所以有点感概;

2024-12-29 23:24:56 711

原创 代码随想录算法训练营第51期第31天 | 56. 合并区间、738.单调递增的数字、968.监控二叉树 (可跳过)、总结

968.监控二叉树 (可跳过)738.单调递增的数字。

2024-12-29 22:48:05 142

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

452. 用最少数量的箭引爆气球。763.划分字母区间。435. 无重叠区间。

2024-12-29 22:47:08 106

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

134. 加油站1.一开始用的是暴力法,就for循环里面套while,超时了,用了随想录上面的C++,也超时了;2.直接看的贪心的解法,最后不需要取模来得出索引。

2024-12-29 22:45:21 418

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

122. 买卖股票的最佳时机 IIhttps://leetcode.cn/problems/best-time-to-buy-and-sell-stock-ii/1.我刚刚看了一下之前用C++写题的时候,自己说了句【我好像记得这道题是怎么写的,也不知道是福是祸】会心一笑,好像不是坏事,过了这么久了,我还是记得,说明我会呀2.很简单哈,就是搜集区间为正数的每日收入,加起来就行了,有一说一,这个是不是画个坐标系,然后统计每个上升区间的差值就可以了55. 跳跃游戏55. 跳跃游戏https://leet

2024-12-26 00:35:16 397

原创 代码随想录算法训练营第51期第27天 | 理论基础、455.分发饼干、376. 摆动序列、53. 最大子序和

b. [1,2,2,2,1]数组,可以抽象为 [1,2,1],允许pre = 0 and cur > 0 和 pre = 0 and cur < 0。2.这里局部最优:当前“连续和”为负数的时候立刻放弃,从下一个元素重新计算“连续和”,因为负数加上下一个元素 “连续和”只会越来越小。d.最后一个,在单调坡度有平坡的情况,是在摆动的时候再更新pre,所以pre放在if里面。2.也有大饼干喂给胃口大的,充分利用饼干尺寸喂饱一个,全局最优就是喂饱尽可能多的小孩;4.C的写法,学习掌握qsort()的使用方法;

2024-12-25 22:01:30 361

原创 代码随想录算法训练营第51期第25天 | 491.递增子序列、46.全排列、47.全排列 II、332.重新安排行程、51.N皇后、39.解数独

491. 非递减子序列1.这题我一开始按照子集的思路去做,去重做的不充分2.这里还是使用uset,记录同层的元素,如果后面的元素在uset有,说明是重复的,不使用3.这里题目预留了一个陷阱,他说让你求递增子序列,但是他给的数组可以不是,可以是[4,7,6,7],而不必是[4,6,7,7],4.可以要用nums[i]和path的最后一位判断,而不是nums[i]和nums[i-1]做判断,就像3里我举的例子。

2024-12-24 00:31:03 280

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

93. 复原 IP 地址这题确实和 131.分割回文串 基本一致,一个判断回文,一个判断地址,所以确实不难。

2024-12-22 19:00:37 431

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

39. 组合总和1.这里和之前的题目不太一样,数字可以被重复选取,体现在代码里就是原来是startIndex,现在直接用index就可以了,换个说法,原来在backtracking()里是i+1,这里直接用i就可以了2.这里backtracking(的参数是val, target, index),每次递归之前都对val做了处理,在递归后还原,如果是优化的话,可以直接写backtracking(val + candidates[i], target, index),这样其实省略了回溯的过程的。

2024-12-21 01:07:32 811

原创 代码随想录算法训练营第51期第22天 | 回溯算法理论基础、77. 组合、216.组合总和III、17.电话号码的字母组合

我先写最新的,免的欠太多不写了。

2024-12-19 01:20:52 611

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

669. 修剪二叉搜索树108.将有序数组转换为二叉搜索树538.把二叉搜索树转换为累加树总结篇

2024-12-19 00:48:00 378

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

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

2024-12-19 00:46:56 108

原创 代码随想录算法训练营第51期第18天(19休息) | 530.二叉搜索树的最小绝对差、501.二叉搜索树中的众数、236. 二叉树的最近公共祖先

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

2024-12-19 00:45:54 129

原创 代码随想录算法训练营第51期第17天 | 654.最大二叉树、617.合并二叉树、700.二叉搜索树中的搜索、98.验证二叉搜索树

654. 最大二叉树1.这题递归很好做,但是我确实写了三次才明白原因,层层把数组打散往下递归,直到数组为空2.这里python直接使用切片,是特有方法,如果是C或C++,是需要把数组和左右的下标传入的。

2024-12-18 00:55:39 513

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

MD,被忽悠了,看起来3题,实际上有5题。

2024-12-16 02:18:21 996

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

110. 平衡二叉树1.这道题是文心一言给的参考,我觉的比卡哥的要好。

2024-12-12 00:20:49 251

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

226. 翻转二叉树1.昨天忘了声明,如果都用C的话,我大概率写不完,所以思路方面,我可能考虑用pyhon先写,后续会用文心一言转换成C2.这里可以直接用层序遍历的写法写出来,但是卡哥说要掌握递归。

2024-12-10 23:57:27 410

原创 代码随想录算法训练营第51期第13天 | 理论基础 、递归遍历、迭代遍历、统一迭代、层序遍历

理论基础递归遍历迭代遍历统一迭代层序遍历

2024-12-09 08:09:16 102

原创 代码随想录算法训练营第51期第11天 (12休息)| 150. 逆波兰表达式求值、239. 滑动窗口最大值、347.前 K 个高频元素、总结

150. 逆波兰表达式求值。347.前 K 个高频元素。239. 滑动窗口最大值。

2024-12-09 08:08:03 125

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

1047. 删除字符串中的所有相邻重复项。232. 用栈实现队列。225. 用队列实现栈。

2024-12-09 08:06:49 99

原创 代码随想录算法训练营第51期第9天 | 151.翻转字符串里的单词、卡码网:55.右旋转字符串、28. 实现 strStr()、459.重复的子字符串、字符串总结、双指针回顾

1.注意看removeSpace里面start和end。这个C语言的写法比python有意思一点,值得学习。151. 反转字符串中的单词。

2024-12-06 00:12:22 315

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

344. 反转字符串1.这道题很简单,直接使用双指针就可以2.这里有一个可以优化的点,left++和right-- 可以放在字符串替换的时候完成,没必要单独写。

2024-12-05 00:13:28 413

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

454. 四数相加 II1.还是复习hash的用法,和两数之和一样的写法,其实这里考虑不封装函数,但是目前熟练度不够,还得写几天再说。

2024-12-04 22:26:06 203

原创 代码随想录算法训练营第51期第6天 | 哈希表理论基础、242. 有效的字母异位词、349. 两个数组的交集、​​​​​​202. 快乐数、1. 两数之和

242. 有效的字母异位词哈希表的基础应用,就26个基础字母,直接用数组就可以了,也不用大费周章写hash,我还得看看哈希怎么写。

2024-12-03 00:52:29 283

原创 代码随想录算法训练营第51期第4天(第5休息) | 24. 两两交换链表中的节点、19. 删除链表的倒数第 N 个结点、面试题 02.07. 链表相交、​​​​​​142. 环形链表 II

24. 两两交换链表中的节点这题的总体思路还是和卡哥一样的,不过我没创立两个临时变量,那不过确实要清晰一些我的思路卡哥的写法其实都是一样的,思路如下C语言有个讨厌的点,就是需要free,老是忘记。

2024-12-02 01:42:20 702

原创 代码随想录算法训练营第51期第3天 | 203. 移除链表元素、27. 移除元素

203. 移除链表元素1.这里tmp是malloc的,我原来是直接return tmp->next,但是malloc完不free,会有内存泄漏的风险,所以最后用head接收,把tmp在return之前free掉。

2024-11-30 23:15:40 224

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

相比前两次有了变化啊这里题目多了区间和和开发商,md,不会啊,这不就是kmp算法嘛,周五再看吧。

2024-11-29 01:56:10 132

原创 代码随想录算法训练营第51期第1天 | 704. 二分查找、27. 移除元素

这是我第三次参加了,第一次参加,勉强完成,第二次参加,半途而废,现在第三次,会有好的结果么?好好加油,所有努力学习的东西,最终都不会辜负你的期待。来吧,C语言数组理论基础1.数组是连续的空间,不能删除,只能覆盖;2.数组下标从0开始;3.今天看C和指针的时候,int a[2][3],指的是2行3列,行列式,a是常量指针。

2024-11-27 23:01:01 388 1

原创 代码随想录算法训练营第四期第三十五天 | 860. 柠檬水找零、406. 根据身高重建队列、452. 用最少数量的箭引爆气球

还坚持嘛

2023-09-05 01:07:29 285

原创 代码随想录算法训练营第17期第34天 | 1005. K 次取反后最大化的数组和、134. 加油站、135. 分发糖果

这里说一下卡哥和我的区别,基本思路是一样的, 只是卡哥这里只需要一次排序,而我这边排了两次;2.从前往后遍历,求遍历值的和,如果当前数为负数,则增加其负数,同时k--;3.如果最后k还大于0且为奇数,再从小到大排序,减去2倍最小的数;2.从前往后遍历,遇到负数将其转换为整数,并k--;3.如果最后k还大于0且为奇数,则减去2倍最小的数;1.按照绝对值大小从大到小排序。

2023-09-01 01:37:51 233

原创 代码随想录算法训练营第17期第32天 | 122. 买卖股票的最佳时机 II、55. 跳跃游戏、45. 跳跃游戏 II

我好像记得这道题是怎么写的,也不知道是福是祸

2023-08-26 01:43:50 235

原创 代码随想录算法训练营第17期第31天 | 理论基础、455.分发饼干、376. 摆动序列、53. 最大子序和

啊这,已经迟了一个月了,还接着写嘛

2023-08-17 01:39:06 152

原创 代码随想录算法训练营第17期第30天 | 332.重新安排行程 、51. N皇后 、​37. 解数独、总结

332.重新安排行程。

2023-08-17 01:07:06 75

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

b.按照第三层的逻辑,前面取7组成【4,7】,当遇到第二个7的时候,就不取了,所以这里需要设置一个map,当然这里值少,用list也行,map的话,写法是【uset.find(nums[i])!= uset.end()】表示找到了,list的话,采用【int used[201] = {0};和used[nums[i]+100] == 1)】,因为这题的要求是【a.题目要求是递增子序列,所以,nums[i]要>=path.back(),故path里面必须要有值,所以,条件之一是【!】,最多201个数;

2023-08-07 01:44:04 134

原创 代码随想录算法训练营第17期第28天 | 93.复原IP地址 、78.子集 、​ 90.子集II

这一题确实就是动态规划的模板,一开始我还考虑了如何停止,后来发现不用,因为start_index在逐次上升,自然就会停止,直接收集结果就可以;因为是直接push_back(path),连path是[]的情况也包含了,不需要额外处理;1.当点号有三个之后,当最后一部分数值是有效的话, 就可以加入结果集了。

2023-08-05 01:16:13 170

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

如果不从头开始遍历的话,i = start_index。

2023-07-27 02:13:31 144

空空如也

空空如也

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

TA关注的人

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