自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 算法250609 高精度

【代码】算法250609 高精度。

2025-06-09 09:28:06 221

原创 代码随想录算法训练营第52天 | 101.孤岛的总面积 102.沉没孤岛 103.水流问题 104.建造最大岛屿

101.孤岛的总面积101.孤岛的总面积题目理解,周边都是水的孤岛的总面积。

2025-05-27 11:56:41 375

原创 算法 第七章模拟

约瑟夫问题是大家所熟知的。如果你不知道这个问题的话,这里可以简短地描述:给定n个编号依次为1,2,…,n,站成一圈,循环报数,报数到m的人将依次被处决,而且只有最后剩下的一个人可以得救。约瑟夫可以聪明地为自己选择最后剩下的那个位置,以使自己得救,因此才有机会告诉我们这件事。例如,n=6,m=5时,依次被处决的人是:5,4,6,3,2,只有第1个人可以被得救。假设有k个好人和k个坏人,而且在这个圆圈里,前k个人是好人,而后k个人是坏人。你必须选取最小的m值,使得所有的坏人先被处决掉。

2025-05-26 09:00:31 293

原创 代码随想录算法训练营第51天 | 99.岛屿数量 深搜 广搜 100.岛屿的最大面积

岛屿数量深搜岛屿数量深搜。

2025-05-19 17:22:57 134

原创 代码随想录算法训练营第50天 | 图论理论基础 深搜理论基础 98. 所有可达路径 广搜理论基础

一般情况,深搜需要 二维数组数组结构保存所有路径,需要一维数组保存单一路径,这种保存结果的数组,我们可以定义一个全局变量,避免让我们的函数参数过多。如果想表示无向图,即:grid[2][5] = 6,grid[5][2] = 6,表示节点2 与 节点5 相互连通,权值为6。例如: grid[2][5] = 6,表示 节点 2 连接 节点5 为有向图,节点2 指向 节点5,边的权值为6。通常我们递归的时候,我们递归搜索需要了解哪些参数,其实也可以在写递归函数的时候,发现需要什么参数,再去补充就可以。

2025-05-15 23:59:32 905

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

42. 接雨水接雨水这道题目是 面试中特别高频的一道题,也是单调栈 应用的题目,大家好好做做。建议是掌握 双指针 和单调栈,因为在面试中 写出单调栈可能 有点难度,但双指针思路更直接一些。在时间紧张的情况有,能写出双指针法也是不错的,然后可以和面试官在慢慢讨论如何优化。

2025-05-13 20:55:58 155

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

用map联系nums1和nums2。496.下一个更大元素 I。503.下一个更大元素II。循环数组通过遍历两遍实现。

2025-05-12 17:22:18 191

原创 250505算法期中练习

对于每个单词,在不改变这些单词之间的顺序下,逆序输出每个单词。这个问题包括多组测试数据。第1行是一个整数M,紧接着是一个空行,然后是M组测试数据,每组数据之间有一个空行。要求输出M个输出块。每个输出块之间有一个空行。

2025-05-06 00:08:30 828

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

其他情况dp[i][j]初始为0就行,这样递推公式:dp[i][j] = max(dp[i + 1][j], dp[i][j - 1]);如果s[i]与s[j]不相同,说明s[i]和s[j]的同时加入 并不能增加[i,j]区间回文子序列的长度,那么分别加入s[i]、s[j]看看哪一个可以组成最长的回文子序列。那么dp[i][j]一定是取最大的,即:dp[i][j] = max(dp[i + 1][j], dp[i][j - 1]);加入s[j]的回文子序列长度为dp[i + 1][j]。

2025-03-31 18:37:45 251

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

从递推公式dp[i][j] = dp[i - 1][j - 1] + dp[i - 1][j];中可以看出dp[i][j] 是从上方和左上方推导而来,如图:,那么 dp[i][0] 和dp[0][j]是一定要初始化的。当s[i - 1] 与 t[j - 1]不相等时,dp[i][j]只有一部分组成,不用s[i - 1]来匹配(就是模拟在s中删除这个元素),即:dp[i - 1][j]dp[i][j]:以i-1为结尾的s子序列中出现以j-1为结尾的t的个数为dp[i][j]。115.不同的子序列。

2025-03-30 23:01:23 353

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

如果text1[i - 1] 与 text2[j - 1]不相同,那就看看text1[0, i - 2]与text2[0, j - 1]的最长公共子序列 和 text1[0, i - 1]与text2[0, j - 2]的最长公共子序列,取最大的。dp[i][j]:长度为[0, i - 1]的字符串text1与长度为[0, j - 1]的字符串text2的最长公共子序列为dp[i][j]即:dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]);1035.不相交的线。

2025-03-28 23:27:22 153

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

因为可以不连续,j要从前往后都遍历一遍。nums[i] == nums[j] 时 ,左上角的数加一想到了,没有想到要初始化列。dp数组代表:以nums[i]为末尾的最长递增子序列的长度。随想录的,不用初始化行和列,初始化直接全部赋零。674. 最长连续递增序列。连续,只需要考虑前面一个元素。718. 最长重复子数组。300.最长递增子序列。300.最长递增子序列。

2025-03-27 22:57:12 133

原创 算法250327题目

给定两个整数A和B,其表示形式是:从个位开始,每三位数用逗号,隔开。现在请计算A+B的结果,并以正常形式输出。

2025-03-27 21:54:10 274

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

本题是123.买卖股票的最佳时机III 的进阶版 视频讲解:动态规划来决定最佳时机,至多可以买卖K次!| LeetCode:188.买卖股票最佳时机4_哔哩哔哩_bilibili代码随想录自己思路:交易k次就有2k种情况二维数组一维数组309.最佳买卖股票时机含冷冻期 309. 买卖股票的最佳时机含冷冻期 - 力扣(LeetCode)视频讲解:动态规划来决定最佳时机,这次有冷冻期!| LeetCode:309.买卖股票的最佳时机含冷冻期_哔哩哔哩_bilibili代码随想录714.买卖

2025-03-26 21:58:13 237

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

121. 买卖股票的最佳时机121. 买卖股票的最佳时机。

2025-03-26 19:03:10 169

原创 代码随想录算法训练营第39天 | 198.打家劫舍 213.打家劫舍II 337.打家劫舍III

如果不偷当前节点,那么左右孩子就可以偷,至于到底偷不偷一定是选一个最大的,所以:val2 = max(left[0], left[1]) + max(right[0], right[1]);如果是偷当前节点,那么左右孩子就不能偷,val1 = cur->val + left[0] + right[0];即:{不偷当前节点得到的最大金钱,偷当前节点得到的最大金钱}递推公式:dp[i] = Math.max(dp[i - 2] + nums[i],dp[i - 1]);337.打家劫舍III。

2025-03-24 22:14:51 256

原创 代码随想录算法训练营第38天 | 322. 零钱兑换 279.完全平方数 139.单词拆分 背包问题总结

322. 零钱兑换322. 零钱兑换如果求组合数就是外层for循环遍历物品,内层for遍历背包。如果求排列数就是外层for遍历背包,内层for循环遍历物品。。279.完全平方数139.单词拆分dp[i]代表,数组元素是否能够组成长度为i时的s完全背包,正序遍历对顺序有要求,先背包再物品递推公式:若前面的字符串可以被组合出来,同时后面的字符串也在数组元素里break;初始化:dp[0] = true;关于多重背包,你该了解这些!背包问题总结。

2025-03-23 22:57:55 1357

原创 代码随想录算法训练营第37天 | 完全背包 518. 零钱兑换 II 377. 组合总和 Ⅳ 70. 爬楼梯 (进阶)

完全背包完全背包背包容量正序遍历,可以重复取之前的物品,完全背包倒序遍历,之前的值还是初始化的值,只能取一次物品,01背包518. 零钱兑换 II。

2025-03-21 20:17:20 263

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

dp[i][j] = Math.max(dp[i][j],dp[i - zeroNum][j - oneNum] + 1) dp[i][j]没放物品i的子集个数。相减之后得到的重量最小。递推公式dp[j] = dp[j] + dp[j - nums[i]];dp[j] 没放i的种类数 dp[j - nums[i]]放了i的种类数。dp[i - zeroNum][j - oneNum] + 1 放了物品i的子集个数,放了i所以子集个数加一。递推公式:dp[j] += dp[j - nums[i]]

2025-03-19 23:04:05 313

原创 代码随想录算法训练营第35天 | 01背包问题 二维 一维 416. 分割等和子集

递推公式:dp[i][j] = Math.max(dp[i - 1][j] , dp[i - 1][j - space[i]] + value[i]);放i和不放i哪个价值最大。//如果i的体积比j大,不能放i。dp[i][j]数组含义:从0-i物品中任取,放入容量为j的背包中时,最大的价值。nums[i]既是空间又是价值。本题是 01背包的应用类题目。416. 分割等和子集。

2025-03-19 18:10:09 260

原创 代码随想录算法训练营第34天 | 62.不同路径 63. 不同路径 II 整数拆分 不同的二叉搜索树 (跳过)

初始化:n - 1列 m - 1行,从左向右从上到下找到最后一个出现的障碍,障碍和之前的dp都是0。递推公式:dp[i][j] = dp[i - 1][j] + dp[i][j - 1];递归公式:dp[i][j] = dp[i + 1][j] + dp[i][j + 1];初始化第一行第一列,没有障碍物赋1,只要遇到一个障碍物就赋0,后面都是0。随想录的,dp的含义是从00到该目标位置有几种走法,从左向右遍历。初始化:dp[i][1] = 1 dp[1][i] = 1。63. 不同路径 II。

2025-03-17 22:58:52 415

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

递推公式:dp[i] = cost[i] + Math.min(dp[i + 1],dp[i + 2]);递推公式:dp[i] = Math.min(dp[i - 1] + cost[i - 1],dp[i - 2] + cost[i - 2]);初始化:dp[len - 1] = cost[len - 1];3级台阶:1.上一级台阶(1种),再走2步 2.上2级台阶(2种),再走1步 1+2。dp含义:dp[i]表示从i层开始,到顶层的最小花费。

2025-03-16 23:05:47 366

原创 代码随想录算法训练营第31天 | 56. 合并区间 738.单调递增的数字 968.监控二叉树

738.单调递增的数字。

2025-03-15 22:27:46 244

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

自己写的,左边界找左边界的最大值(其实就是),右边界找右边界的最小值,如果合法就是重叠区间。452. 用最少数量的箭引爆气球。452. 用最少数量的箭引爆气球。435. 无重叠区间。763.划分字母区间。

2025-03-13 23:08:03 217

原创 java 250313上课练习

【代码】java 250313上课练习。

2025-03-13 20:16:15 90

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

本题涉及到一个思想,就是想处理好一边再处理另一边,不要两边想着一起兼顾,后面还会有题目用到这个思路。本题有点难度,和分发糖果类似,不要两头兼顾,处理好一边再处理另一边。再从右往左遍历,左比右大就比右边的值多1,取最大值。先从左往右遍历,右比左大就赋值2,其他赋值1。付20优先找10+5,然后找3*5。406.根据身高重建队列。

2025-03-12 23:13:13 219

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

122.买卖股票的最佳时机II计算每个数之间的差值,差值是正的就加到sum里,是负数就先把sum里的数加给result,然后把sum清空。最后循环结束时如果sum是正的,要把sum加到result里面55. 跳跃游戏。

2025-03-11 23:14:00 264

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

连续和为负数时,后面一个数如果更大,就可以抛弃到前面的数。result随时记录最大的和。

2025-03-10 23:04:42 131

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

组合要从startIndex开始排列全都从0开始分割:记录区间左右下标横向去重:排过序之后可以看a[i - 1] == a[i] && used[i] == false 没有排序设一个局部set或set数组,记录当前层元素是否用过纵向去重:设一个全局的used数组找叶子节点和找所有节点,收集结果的位置不一样。

2025-03-10 18:51:42 469

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

数组先排好序,结合used数组记录元素使用情况,如果元素和前一个相同,且前一个未在path中,说明之后的情况都是一样的,直接跳过这个元素。子集问题,就是收集树形结构中,每一个节点的结果。整体代码其实和 回溯模板都是差不多的。代码随想录的,直接在stringbuilder上加点修改,时间复杂度低。之前的组合、切割都是收集叶子节点,子集要收集所有节点。记录搜索树中所有的节点。自己写的,时间太长了。

2025-03-07 21:45:36 317

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

39. 组合总和。

2025-03-07 16:46:42 348

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

17.电话号码的字母组合。216.组合总和III。

2025-03-06 19:34:23 346

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

235. 二叉搜索树的最近公共祖先利用二叉搜索树的特性。

2025-03-04 15:56:17 304

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

530.二叉搜索树的最小绝对差530.二叉搜索树的最小绝对差需要领悟一下二叉树遍历上双指针操作,优先掌握递归501.二叉搜索树中的众数。

2025-03-03 20:26:13 270

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

654.最大二叉树。

2025-03-03 15:24:23 311

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

找树左下角的值。

2025-02-28 20:34:12 240

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

其实本题有点文字游戏,搞清楚什么是左叶子,剩下的就是二叉树的基本操作。257. 二叉树的所有路径 (优先掌握递归)222.完全二叉树的节点个数(优先掌握递归)110.平衡二叉树 (优先掌握递归)404.左叶子之和 (优先掌握递归)找到左节点之后,把值返到父亲节点。

2025-02-27 21:44:06 224

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

226.翻转二叉树 (优先掌握递归)这道题目 一些做过的同学 理解的也不够深入,建议大家先看我的视频讲解,无论做过没做过,都会有很大收获。

2025-02-25 22:11:28 215

原创 代码随想录算法训练营第13天| 二叉树递归遍历 迭代遍历 统一迭代 层序遍历

二叉树的种类:满二叉树,完全二叉树,二叉搜索树存储方式:链表,数组遍历方式:深度优先(前中后序),广度优先递归遍历 (必须掌握)二叉树的三种递归遍历掌握其规律后,其实很简单。

2025-02-24 23:02:19 306

原创 代码随想录算法训练营第11天| 逆波兰表达式求值 滑动窗口最大值 前 K 个高频元素 各种函数总结

put(key, value):将指定的键和值添加到map中,如果键已存在,则替换对应的值。containsValue(value):检查map中是否包含value值。containsKey(key):检查map中是否包含key键。get(key):根据key获取对应的值value。remove(key):根据key移除对应的键值对。entrySet():返回包含所有键值对的集合。keySet():返回包含所有键的集合。values():返回包含所有值的集合。150. 逆波兰表达式求值。

2025-02-23 22:31:42 280

空空如也

空空如也

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

TA关注的人

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