自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 代码随想录算法训练营第50天| Kama98. 所有可达路径

int。

2024-12-26 10:37:30 207

原创 代码随想录算法训练营第49天| Leetcode42. 接雨水、Leetcode4284.柱状图中最大的矩形

还需要继续优化…不过能写出来还是很开心的!时间O(n)空间O(n)

2024-12-26 09:26:25 259

原创 代码随想录算法训练营第48天| Leetcode739. 每日温度 、Leetcode496.下一个更大元素 I、Leetcode503.下一个更大元素II

我就知道没那么容易,果然有个极端的时间的case使得时间复杂度为O(n^2),那么接下来想一下怎么来优化?

2024-12-21 20:55:45 242

原创 代码随想录算法训练营第46天| Leetcode647. 回文子串 、Leetcode516.最长回文子序列

有点难想,三刷掌握就不错了然后这个题的话,有个问题就是遍历顺序我觉得最主要的是递推公式写好!根据递推公式来确定遍历顺序!这也是这题以及所有dp题的遍历顺序的bool。

2024-12-15 23:41:27 190

原创 代码随想录算法训练营第45天| Leetcode115.不同的子序列 、Leetcode583. 两个字符串的删除操作 、Leetcode72. 编辑距离

看着答案写出来的,现在觉得这种表格题要结合表格理解会更清楚,要想明白朝向,是从哪里推出当前格的。uint64_t。

2024-12-15 23:24:37 190 1

原创 代码随想录算法训练营第44天| Leetcode1143.最长公共子序列 、Leetcode1035.不相交的线 、Leetcode 53. 最大子序和、Leetcode392.判断子序列

int。

2024-12-14 10:21:56 174

原创 代码随想录算法训练营第43天| Leetcode300.最长递增子序列、Leetcode674. 最长连续递增序列、Leetcode718. 最长重复子数组

假设你直接返回 dp[n-1],那么你只是返回了以最后一个元素为结尾的最长递增子序列的长度。但这并不能保证这个值是整个数组中最长递增子序列的长度,。例如:如果输入数组是 [10, 9, 2, 5, 3, 7, 101, 18],那么 dp[7](即最后一个元素 18)可能不会是整个数组的最长递增子序列的长度。

2024-12-12 00:02:35 166

原创 代码随想录算法训练营第42天| Leetcode188.买卖股票的最佳时机IV、Leetcode309.最佳买卖股票时机含冷冻期、Leetcode714.买卖股票的最佳时机含手续费

这一题是III的一个通解,III实际上是k=2的一个特解忽然弄明白了一点:为什么买卖股票和爬楼梯不一样的?爬楼梯问题:每一步只是对前一步的决策进行累加,不需要分成持有或不持有状态,因为没有“持久性”的决策影响。股票买卖问题:需要维护两种状态(持有股票和不持有股票),因为每次交易的决策(买入或卖出)会影响后续的决策,且这两种状态具有“持久性”并互相影响。int。

2024-12-10 10:56:28 193

原创 代码随想录算法训练营第41天| Leetcode121. 买卖股票的最佳时机、Leetcode122.买卖股票的最佳时机II、Leetcode122.买卖股票的最佳时机III

上面是贪心算法,下面这个就是dp的做法,这里是二层dp,第一次见过欸,分别是持有股票和不持有股票的做法int。

2024-12-10 00:20:52 265

原创 代码随想录算法训练营第39天| Leetcode198.打家劫舍、Leetcode213.打家劫舍II、Leetcode337.打家劫舍 III

这是我的跑不通的代码,dp数组的含义是总金额,空间复杂度可能过大,可以优化,也一直在纠结这里的是第一个先手和第二个先手都会导致取不到所有结果的问题,还弄了一个flag数组,试图标记是否取到相邻房子。然而,如果按照答案做法,简洁优雅:巧妙的规避了奇偶问题2.dp数组构建的好,我构建的是金额,第一是空间复杂度高,第二是逻辑不清楚做不出来很乱,第三是得遍历两次时间复杂度O(n),空间复杂度O(n)

2024-12-08 10:30:41 184

原创 代码随想录算法训练营第38天| Leetcode322. 零钱兑换、Leetcode279.完全平方数、 Leetcode139.单词拆分

真的是没搞懂啊dp,不过问题不大,等忙完这阵儿系统学学。

2024-12-07 14:49:03 226

原创 代码随想录算法训练营第37天| Leetcode 518.零钱兑换II、Leetcode377. 组合总和 Ⅳ、Leetcode70. 爬楼梯 (进阶)

首先要明确的是,什么是组合问题,什么又是排列问题呢?这两个是不一样的!但是有点儿想不明白,为什么dp[0]初始化为1呢看着好简单的几行,却要思考很多问题,这就是代码的魅力吗?

2024-12-06 22:42:34 291

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

但是如果不放在动态规划这一章节,还能做出来吗?感觉难吧…

2024-12-04 23:51:44 274

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

0-1背包问题是经典的dp问题,有,分别是背包容量,物品质量,物品价值。根据物品是否重复分为三种类型:1.:每个物品只有一个2.:所有物品无限个3.:每个物品的数量不尽相同为了算法题面试,这里只要掌握0-1和完全背包即可,重要的是掌握思想,这种最优子问题的思想。暂时自己写不出来,copy学习一下。

2024-12-03 13:40:01 243

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

二维初始化要记住!int。

2024-12-02 11:01:03 234

原创 代码随想录算法训练营第32天| Leetcode509. 斐波那契数 、Leetcode70. 爬楼梯、 Leetcode746. 使用最小花费爬楼梯

第一次做dp的题,思路很清晰。

2024-12-01 20:15:25 196

原创 代码随想录算法训练营第31天| Leetcode56. 合并区间 、Leetcode 738.单调递增的数字、 968.监控二叉树 (一刷暂时跳过)

这道不难,直接写出来了。

2024-12-01 00:04:41 248

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

在不断地改正之后,我的代码如下,不过令人难受的是,超时了。

2024-11-28 21:29:06 228

原创 代码随想录算法训练营第29天| Leetcode134. 加油站 、Leetcode135. 分发糖果 、Leetcode860.柠檬水找零、Leetcode406.根据身高重建队列

错误的做法如下:试图用一个示例或者两个来解决问题,实际问题要从问题的出发点考虑,而不是解决单个例子就行,这是大忌!

2024-11-28 00:33:04 255

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

啊,为啥medium呢,不是很简单吗?

2024-11-26 22:05:42 289

原创 代码随想录算法训练营第27天| Leetcode455.分发饼干、Leetcode376. 摆动序列、Leetcode53. 最大子序和

而且感觉我这儿写的好麻烦好复杂啊,没事,第一遍先做出来,锻炼解决出问题的能力。这题看答案了,解法真巧啊,要是我的话,一定两层for硬怼上去了,效率巨慢了。一开始理解错意思了,以为是连续的子数列,这里敲黑板!费时间版本的自己的做法,注意点全写在注释里面了。和答案不一样,属于是先遍历饼干的做法。第二遍再重点培养解决好问题的能力。

2024-11-25 13:36:13 257

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

按理说是要排序的,但是这个要求自增子序列,所以用的是unordered_set来确定使用过没,从而进行剪枝。很常见的做法,利用一个used 的bool数组来记录使用情况。先排序排除[i] == [i-1]的情况。以及利用used数组。

2024-11-25 00:38:27 235

原创 代码随想录算法训练营第24天| Leetcode93. 复原 IP 地址、Leetcode78.子集、Leetcode90. 子集 II

之前的题型,懒得写了,直接抄的随想录的代码,忘记了这个used的作用,所以测试了一下used[i - 1] == false,如果删除的话,会有以下的[1.2.2]取不到的情况,是左右和上下都去重了,而实际上我们只有去左右的重就行。第一,int和string的转换:字符串和整数 stoi() 以及to_string()重新复习一遍。基本逻辑是会写的,但是代码中的小细节的问题比较多。第二,substr(index, len)用的很笨。

2024-11-22 11:01:47 355

原创 代码随想录算法训练营第23天| Leetcode39. 组合总和、Leetcode40.组合总和II 、Leetcode131.分割回文串

这题最麻烦的就是剪枝操作,这个和三数之和的剪枝操作不一样。难题,第一遍不求甚解,照着先敲出来。感觉其实也不难,最主要的是我没想出。不难,但是注意代码中两个注释的点。这里是一层树高上的重复。这里首先要区分剪枝剪的是。

2024-11-21 10:21:32 240

原创 代码随想录算法训练营第22天| Leetcode77.组合、Leetcode216.组合总和 III、Leetcode17. 电话号码的字母组合

回溯算法不是高深的算法,时间复杂度也不低,相当于是穷举算法,那么为什么还用回溯呢?实际上是为了用递归解决遍历困难的问题,就比如说写100个for循环时不现实的,所以只能用递归回溯来解决。在第一题的基础上加了个判定,容易。

2024-11-20 23:59:16 224

原创 代码随想录算法训练营第4天|Leetcode24. 两两交换链表中的节点、Leetcode19. 删除链表的倒数第 N 个结点、面试题 0207. 链表相交、Leetcode142. 环形链表 II

加一个哑节点,便于处理,并且返回的是前一个节点。注释的那部分是刚开始写的代码,发现报错不对。道理都懂,就是得好好推导数学公式。这个刚开始没想好,后面改了。

2024-11-19 11:07:21 236 1

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

这是二叉搜索树(BST)的做法。如果递归内层有返回值传到外层没有变量借助的话,编译器会把它直接丢弃,相当于代码白写了,一点儿用都没有啊。看上去逻辑很清楚,但是还是没有很明白,这题还得复习。

2024-11-18 11:08:01 243

原创 (补)代码随想录算法训练营第3天| Leetcode203. 移除链表元素、Leetcode707.设计链表、Leetcode206. 反转链表

dummy_node这种处理要记住!然后delete掉未被释放的内存也是关键的一点,提现了良好的代码素养没啥新意,但是一个完整的类还没写过呢…

2024-11-18 00:32:14 287

原创 代码随想录算法训练营第18天| Leetcode530. 二叉搜索树的最小绝对差、Leetcode501.二叉搜索树中的众数 、Leetcode236. 二叉树的最近公共祖先

直接用一个unordered_map,最后挪到vector之后排序。因为unordered_map是无序的,并且难以排序,甚至map也没用,因为我们要对val进行排序,map只能对key排序。利用BST的特性,用双指针记录前一个节点,然后依次比较。值得注意的是相同众数的判定形式。,二刷的时候重点理解一下吧 ~ ~ ~

2024-11-16 17:08:54 337

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

报错:如果本身是nullptr的时候需要判定,因为无法访问左右孩子节点和val了…这里就要记住必须不是nullpt的时候r才能访问结构体内元素。一点儿小错误,没初始化,要初始化,别偷懒。

2024-11-16 00:17:17 244

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

这题主要的思路是每一层都把两个数组分成四个数组。如果后序数组等于1的时候,那把这个节点加到树中。在这个题中表现了我对返回值的不理解,后来理解明白了,但是二刷的时候还是得关注一下这道题。但这种理解非常肤浅,下一次还得忘记,二刷的时候重点把这一题解决一下。这题想起来就很复杂,所以没自己来写,照着答案敲了一遍。return false或者true。关注被调用的返回值!

2024-11-14 23:06:53 307

原创 代码随想录算法训练营第15天| Leetcode110. 平衡二叉树、Leetcode222. 完全二叉树的节点、Leetcode404. 左叶子之和、Leetcode257. 二叉树的所有路径

思考:层序遍历肯定不能O(n),所以是递归遍历做法,一直想的是留下最后一层未满的,只要知道高度和未满的那一层的个数就行了,但是做不出来。回溯法需要一个vector来回退到之前的某一个状态,这就是比递归多的东西。但凡是中间的变量赋值成递归函数,那说明还是在变化调用,是个变化的值。return 返回具体值,那证明不变了,要输出了。答案是根据找大树中的小的完全二叉树,非常巧妙!晕,怎么递归理解的这么差,这个也没做出来…语法:1<<n:1的二进制往左移动n。高度最后返回的应该是。深度最后返回的应该是。

2024-11-14 00:06:57 751

原创 代码随想录算法训练营第14天| Leetcode226.翻转二叉树、Leetcode101. 对称二叉树、Leetcode104. 二叉树的最大深度、Leetcode111. 二叉树的最小深度

原来遍历的代码没有返回值,现在在有返回值的情况下,return返回的是一个()&&(),这里的。虽然简单题,但是没写对。注释掉的是原来所写的错误的代码。

2024-11-12 15:47:49 255

原创 代码随想录算法训练营第13天| Leetcode94. 二叉树的中序遍历 Leetcode102. 二叉树的层序遍历

还是面向实习来刷算法题,迭代法就没必要探究了,不懂为啥要搞明白迭代法,递归法又简单,而且和迭代法一样。真遇到一定用递归法的题再回来看吧今天这两题没话说,模板,要背熟,在理解的基础上”背“,因为这是树的题的基座,必须要把这个没错误很快写出来,才能提升做二叉树的题的效率。

2024-11-11 14:59:32 311

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

直接看答案了,首先明确的是,本质上就是一个map统计词频+排序,但要求的是时间复杂度优于O(n log n),那么就限定到了有限的几个排序中,从下表中看出,快排也不行,只有堆排序之类的才能满足。注意: compare的构造,一般是用一个comparison的类,重写bool operator()不难,但是这个string和int转换之间有点乱,以及代码写的繁琐了,能不能优化一下写法呢?,但是本题因为是,默认不了诶。

2024-11-10 13:57:09 412

原创 代码随想录算法训练营第10天| Leetcode232. 用栈实现队列 、Leetcode225. 用队列实现栈、Leetcode20. 有效的括号、Leetcode1047. 删除字符串中的所有相邻

答案中是把一个队列当,我的做法是这两个队列的,在pop一次之后就更换主队列。但是写起来会有点麻烦。

2024-11-08 16:33:54 383

原创 代码随想录算法训练营第9天| Leetcode151. 反转字符串中的单词 、kama.55.右旋转字符串

没啥难度,但是提交了好几遍改了之后才得到正确答案,对代码的细节把握还是不够,以及可以用swap()来代替四行代码。答案是三次反转,不大好想,记住这种方法就行了,以后类似题。

2024-11-07 20:45:35 258

原创 代码随想录算法训练营第8天| Leetcode344.反转字符串 Leetcode541. 反转字符串II kama54.替换数字

不是思路的问题,而是写法太冗余了,一个min/判别式解决的事情,罗里吧嗦写了那么多。代码一定要简洁,if else不要这么轻易交出去。值得注意的是,习惯用leetcode了,kama中啥都没有好不习惯,头函数<iostream>之类的啥的自己得记住怎么写。

2024-11-06 15:33:06 371

原创 代码随想录算法训练营第7天| Leetcode454.四数相加II Leetcode383.赎金信 Leetcode15.三数之和 Leetcode18.四数之和

超级难题2,又嵌套了一层,上面的思路继续就行了,还要注意的是溢出问题,要转换成long,甚至long long。上面这两行代码需要记住,这是在原数组跳过重复值的好方法。就是在不重复的原数组的筛选中不能有重复的值。固定一个,然后利用双指针法,从前后夹住。最后两题做不出来,直接说答案思路吧。

2024-11-05 22:34:34 408

原创 代码随想录算法训练营第6天| Leetcode242.有效的字母异位词 、Leetcode349.两个数组的交集、Leetcode202.快乐数 、Leetcode1. 两数之和

(1)实现方法(三种方法,两种底层)(2)使用限制(可重复,有无序,效率)

2024-11-04 16:01:29 295

空空如也

空空如也

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

TA关注的人

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