自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 代码随想录算法训练营Day 63| 图论 part03 | 417.太平洋大西洋水流问题、827.最大人工岛、127. 单词接龙

用两个visited来表示。

2024-07-25 11:05:03 1680

原创 代码随想录算法训练营Day 62| 图论 part02 | 695. 岛屿的最大面积、1020.飞地的数量、130.被围绕的区域

其实就是从边缘遍历,不是整幅图遍历,最后边缘能遍历到的就都visited=True了,剩下的False且为陆地的就是飞地。

2024-07-12 22:33:11 531

原创 代码随想录算法训练营Day 61| 图论 part01 | 797.所有可能的路径、200.岛屿数量(深搜)

版本一的写法是 :下一个节点是否能合法已经判断完了,传进dfs函数的就是合法节点。版本二的写法是:不管节点是否合法,上来就dfs,然后在终止条件的地方进行判断,不合法再return。

2024-06-25 16:20:57 505

原创 代码随想录算法训练营Day 60| 单调栈part03| 84.柱状图中最大的矩形

【代码】代码随想录算法训练营Day 60| 单调栈part03| 84.柱状图中最大的矩形。

2024-06-14 16:12:29 276

原创 代码随想录算法训练营Day 59| 单调栈part02 | 503.下一个更大元素II、42. 接雨水

【代码】代码随想录算法训练营Day 59| 单调栈part02 | 503.下一个更大元素II、42. 接雨水。

2024-06-11 11:28:22 264

原创 代码随想录算法训练营Day 57| 单调栈part01 |739. 每日温度、496.下一个更大元素 I

【代码】代码随想录算法训练营Day 57| 单调栈part01 |739. 每日温度、496.下一个更大元素 I。

2024-05-31 10:55:38 262

原创 代码随想录算法训练营Day 56| 动态规划part17 | 647. 回文子串、5. 最长回文子串、516.最长回文子序列

【代码】代码随想录算法训练营Day 56| 动态规划part17 | 647. 回文子串、5. 最长回文子串、516.最长回文子序列。

2024-05-30 12:05:54 359

原创 代码随想录算法训练营Day 55|动态规划part16| 583. 两个字符串的删除操作、72. 编辑距离

【代码】代码随想录算法训练营Day 55|动态规划part16| 583. 两个字符串的删除操作、72. 编辑距离。

2024-05-29 17:57:12 365

原创 代码随想录算法训练营Day 54| 动态规划part15 | 392.判断子序列、115.不同的子序列

【代码】代码随想录算法训练营Day 54| 动态规划part15 | 392.判断子序列、115.不同的子序列。

2024-05-29 16:30:52 308

原创 代码随想录算法训练营Day 53| 动态规划part14 | 1143.最长公共子序列、1035.不相交的线 、53. 最大子序和 (动态规划 )

【代码】代码随想录算法训练营Day 53| 动态规划part14 | 1143.最长公共子序列、1035.不相交的线 、53. 最大子序和 (动态规划 )

2024-05-29 14:12:47 241

原创 码随想录算法训练营Day 52 | 动态规划part13 | 300.最长递增子序列、674. 最长连续递增序列 、718. 最长重复子数组

【代码】码随想录算法训练营Day 52 | 动态规划part13 | 300.最长递增子序列、674. 最长连续递增序列 、718. 最长重复子数组。

2024-05-29 10:48:10 375

原创 代码随想录算法训练营Day 50 | 动态规划part12 | 309.最佳买卖股票时机含冷冻期、714.买卖股票的最佳时机含手续费

【代码】代码随想录算法训练营Day 50 | 动态规划part12 | 309.最佳买卖股票时机含冷冻期、714.买卖股票的最佳时机含手续费。

2024-05-28 17:47:43 380

原创 代码随想录算法训练营Day 49| 动态规划part11| 123.买卖股票的最佳时机III、188.买卖股票的最佳时机IV

【代码】代码随想录算法训练营Day 49| 动态规划part11| 123.买卖股票的最佳时机III、188.买卖股票的最佳时机IV。

2024-05-28 16:25:24 245

原创 代码随想录算法训练营Day 48| 动态规划part10 | 121. 买卖股票的最佳时机、122.买卖股票的最佳时机II

【代码】代码随想录算法训练营Day 48| 动态规划part10 | 121. 买卖股票的最佳时机、122.买卖股票的最佳时机II。

2024-05-23 11:54:42 254 1

原创 代码随想录算法训练营Day 47|动态规划part09|198.打家劫舍、213.打家劫舍II 、337.打家劫舍III

【代码】代码随想录算法训练营Day 47|动态规划part09|198.打家劫舍、213.打家劫舍II 、337.打家劫舍III。

2024-05-20 23:51:15 542

原创 代码随想录算法训练营Day 46|动态规划part08|139.单词拆分、多重背包、背包问题总结篇

有N种物品和一个容量为V 的背包。第i种物品最多有Mi件可用,每件耗费的空间是Ci ,价值是Wi。

2024-05-20 22:34:36 277

原创 代码随想录算法训练营Day 45|动态规划part07| 70. 爬楼梯 (进阶)、322. 零钱兑换、279.完全平方数

dp[i]:爬到有i个台阶的楼顶,有dp[i]种方法。

2024-05-20 18:23:19 417

原创 代码随想录算法训练营Day 44| 动态规划part06 | 完全背包、518. 零钱兑换 II、377. 组合总和 Ⅳ

有N件物品和一个最多能背重量为W的背包。第i件物品的重量是weight[i],得到的价值是value[i]。每件物品都有无限个(也就是可以放入背包多次),求解将哪些物品装入背包里物品价值总和最大。完全背包和01背包问题唯一不同的地方就是,每种物品有无限件。和目标和那道题很像,求组合数。与上题相比 这个是求排列数。

2024-05-16 11:48:15 253

原创 代码随想录算法训练营Day 43| 动态规划 part05 | 1049. 最后一块石头的重量 II、494. 目标和、474.一和零

题目链接。

2024-05-16 10:41:49 427

原创 代码随想录算法训练营Day 42| 动态规划part04 | 01背包问题理论基础I、01背包问题理论基础II、416. 分割等和子集

有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i],得到的价值是value[i]。每件物品只能用一次,求解将哪些物品装入背包里物品价值总和最大。

2024-05-14 10:16:03 395

原创 代码随想录算法训练营Day 41| 动态规划part03 | 343. 整数拆分、96.不同的二叉搜索树

【代码】代码随想录算法训练营Day 41| 动态规划part03 | 343. 整数拆分、96.不同的二叉搜索树。

2024-05-09 18:18:54 1573

原创 代码随想录算法训练营Day 39| 动态规划part02 | 62.不同路径、63. 不同路径 II

也有一些小细节,例如:初始化的部分,很容易忽略了障碍之后应该都是0的情况。只要考虑到,遇到障碍dp[i][j]保持0就可以了。

2024-05-09 16:54:37 542

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

那么又是一个贪心:局部最优:只找数值最小的正整数进行反转,当前数值和可以达到最大(例如正整数数组{5, 3, 1},反转1 得到-1 比 反转5得到的-5 大多了),全局最优:整个 数组和 达到最大。那么如果将负数都转变为正数了,K依然大于0,此时的问题是一个有序正整数序列,如何转变K次正负,让 数组和 达到最大。贪心的思路,局部最优:让绝对值大的负数变为正数,当前数值达到最大,整体最优:整个数组和达到最大。第三步:如果K还大于0,那么反复转变数值最小的元素,将K用完。局部最优可以推出全局最优。

2024-05-09 16:03:41 246

原创 代码随想录算法训练营Day 38| 动态规划part01 | 理论基础、509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯

对于动态规划问题,我将拆解为如下五步曲,这五步都搞清楚了,才能说把动态规划真的掌握了!

2024-05-09 15:23:17 855

原创 代码随想录算法训练营Day 37| 贪心算法 part06 | 738.单调递增的数字、968.监控二叉树

【代码】代码随想录算法训练营Day 37| 贪心算法 part06 | 738.单调递增的数字、968.监控二叉树。

2024-05-09 09:59:31 275

原创 代码随想录算法训练营Day 36|贪心算法 part05|435. 无重叠区间、763.划分字母区间、56. 合并区间

在遍历的过程中相当于是要找每一个字母的边界,如果找到之前遍历过的所有字母的最远边界,说明这个边界就是分割点了。此时前面出现过所有字母,最远也就到这个边界了。从头遍历字符,并更新字符的最远出现下标,如果找到字符最远出现位置下标和当前下标相等了,则找到了分割点。统计每一个字符最后出现的位置。

2024-05-07 13:21:35 389

原创 代码随想录算法训练营Day 35| 贪心算法 part04| 860.柠檬水找零、406.根据身高重建队列、452. 用最少数量的箭引爆气球

所以局部最优:遇到账单20,优先消耗美元10,完成本次找零。全局最优:完成全部账单的找零。局部最优:优先按身高高的people的k来插入。插入操作过后的people满足队列属性。因为美元10只能给账单20找零,而美元5可以给账单10和账单20找零,美元5更万能!全局最优:最后都做完插入操作,整个队列满足题目队列属性。需要更新右边界来判断是否有第三、第四个…

2024-05-07 00:09:38 315

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

【代码】代码随想录算法训练营Day 32| 贪心算法 part02 | 122.买卖股票的最佳时机II、55. 跳跃游戏 、45.跳跃游戏II。

2024-05-04 00:17:05 228

原创 代码随想录算法训练营Day 29| 回溯算法part05 | 491.递增子序列、46.全排列、47.全排列 II

在90.子集II (opens new window)中我们是通过排序,再加一个标记数组来达到去重的目的。而本题求自增子序列,是不能对原数组进行排序的,排完序的数组都是自增子序列了。每层都是从0开始搜索而不是startIndex。需要used数组记录path里都放了哪些元素了。所以不能使用之前的去重逻辑!

2024-04-28 23:45:58 352 1

原创 代码随想录算法训练营Day 28| 回溯算法Part 04 | 93.复原IP地址、78.子集 、90.子集II

今天的题目好简单!

2024-04-27 17:19:42 479

原创 代码随想录算法训练营Day 27| 回溯算法part03 | 39. 组合总和、40.组合总和II、131.分割回文串

如果candidates[i] == candidates[i - 1] 并且 used[i - 1] == false,就说明:前一个树枝,使用了candidates[i - 1],也就是说同一树层使用过candidates[i - 1]。本题数组candidates的元素是有重复的,而39.组合总和 (opens new window)是无重复元素的数组candidates。2.树层去重,要去重的是“同一树层上的使用过”,如何判断同一树层上元素(相同的元素)是否使用过了呢。

2024-04-26 22:55:54 834 1

原创 代码随想录算法训练营Day 25| 回溯算法part02 | 216.组合总和III、 17.电话号码的字母组合

【代码】代码随想录算法训练营Day 25| 回溯算法part02 | 216.组合总和III、 17.电话号码的字母组合。

2024-04-24 16:48:28 526 1

原创 代码随想录算法训练营Day 24 | 回溯算法part01 | 回溯理论基础、77.组合

其中要注意的是,在 Python 中,列表是可变对象,所以当修改 path 时,result 中已存储的所有引用都会随之变化。这个问题已经遇到不止一次了,要注意保存的是什么,如果只是append(path)最后输出的就全是空列表[]。因为回溯法解决的都是在集合中递归查找子集,集合的大小就构成了树的宽度,递归的深度就构成了树的深度。为什么有个+1呢,因为包括起始位置,我们要是一个左闭的集合。递归就要有终止条件,所以必然是一棵高度有限的树(N叉树)。回溯法解决的问题都可以抽象为树形结构。

2024-04-22 22:46:41 508

原创 代码随想录算法训练营Day 15|二叉树Part02|层序遍历10题、226.翻转二叉树 、101.对称二叉树 2

题目链接107. 二叉树的层序遍历 II题目链接199. 二叉树的右视图题目链接637. 二叉树的层平均值题目链接429. N 叉树的层序遍历题目链接515. 在每个树行中找最大值题目链接116. 填充每个节点的下一个右侧节点指针题目链接117. 填充每个节点的下一个右侧节点指针 II题目链接与116题完全一样的代码104. 二叉树的最大深度题目链接层序遍历111. 二叉树的最小深度题目链接递归遍历226.翻转二叉树题目链接二、中序遍历递归法三、后

2024-04-09 00:05:22 430 1

原创 代码随想录算法训练营Day 09|字符串Part02|28. 实现 strStr()、459.重复的子字符串

题目链接题目链接。

2024-04-04 17:45:43 325 1

原创 代码随想录算法训练营Day 14|二叉树Part01|二叉树理论基础、递归遍历 、迭代遍历、统一迭代

前面介绍的树,都没有数值的,而二叉搜索树是有数值的了,二叉搜索树是一个有序树。下面这两棵树都是搜索树又被称为AVL(Adelson-Velsky and Landis)树,且具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。常用通过指针把分布在各个地址的节点串联一起。如果父节点的数组下标是 i,那么它的左孩子就是 i * 2 + 1,右孩子就是 i * 2 + 2。递归遍历二叉树的前序遍历二叉树的中序遍历二叉树的后序遍历每次写递归,

2024-04-03 20:59:58 1541 1

原创 代码随想录算法训练营Day 13|栈与队列Part03|239. 滑动窗口最大值、347.前 K 个高频元素

注意,当需要pop时,需要从队列的前端弹出元素,应该使用的是popleft()操作,而在push方法中,目的是维持一个单调递减的队列,应该检查队列尾部的元素self.queue[-1] < value,因为新元素是从尾部加入的,所以应该确保尾部的元素小于新加入的元素时才弹出,以维持队列的单调性。要统计元素出现频率、对频率排序、找出前K个高频元素用小顶堆,因为要统计最大前k个元素,只有小顶堆每次将最小的元素弹出,最后小顶堆里积累的才是前k个最大元素。

2024-04-03 14:30:45 313 1

原创 代码随想录算法训练营Day 11|栈与队列Part02|20. 有效的括号、1047. 删除字符串中的所有相邻重复项、150. 逆波兰表达式求值

在匹配左括号的时候,右括号先入栈,就只需要比较当前元素和栈顶相不相等就可以了,比左括号先入栈代码实现要简单的多了很容易理解的题目。逆波兰表达式其实是二叉树的后序遍历,但是用栈解决很方便。

2024-04-02 20:21:49 342 1

原创 代码随想录算法训练营Day 10|栈与队列Part01|232.用栈实现队列、225. 用队列实现栈

将一个栈当作输入栈,用于压入 push传入的数据;另一个栈当作输出栈,用于 pop 和peek 操作。每次 pop 或 peek 时,若输出栈为空则将输入栈的全部数据依次弹出并压入输出栈,这样输出栈从栈顶往栈底的顺序就是队列从队首往队尾的顺序。一个队列在模拟栈弹出元素的时候只要将队列头部的元素(除了最后一个元素外) 重新添加到队列尾部,此时再去弹出元素就是栈的顺序了。

2024-04-01 22:01:30 328

原创 代码随想录算法训练营Day 08|字符串Part01|344.反转字符串 、541. 反转字符串II、卡码网:54.替换数字、151.翻转字符串里的单词、卡码网:55.右旋转字符串

so easy!本题注意指针的移动间隔为2*k会简便许多python解法很简单,但是要注意acm模式的写法注意join的操作。

2024-04-01 13:33:37 432

空空如也

空空如也

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

TA关注的人

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