- 博客(56)
- 收藏
- 关注
原创 代码随想录八股文训练营40天总结
1.从0到1比较线性的了解的javaweb开发的流程细节,并且熟悉了很多基础面试题。3.为期40天,养成了每天八股文的习惯,以及通过笔记记录八股文的技巧。2.通过语音的训练方式,掌握了控制语速和说话的流畅程度。
2024-09-17 09:42:21 169
原创 【c++刷题笔记-图论】day62:Floyd 算法、A * 算法精讲
Floyd算法本质是动态规划,递推算出每个节点之间的最短距离。可以用于有负权值的最短路径。Astar 是一种 广搜的改良版。有的是 Astar是 dijkstra 的改良版。
2024-08-05 12:07:31 624
原创 【c++刷题笔记-图论】day61:Bellman_ford 队列优化算法(又名SPFA)、bellman_ford之判断负权回路、bellman_ford之单源有限最短路
对所有边松弛一次,相当于计算起点到与起点一条边相连的节点的最短距离bellman_ford算法的核心就在松弛操作上。
2024-08-05 11:53:41 296
原创 【c++刷题笔记-图论】day59:dijkstra(堆优化版)精讲 、Bellman_ford 算法精讲
模板题,理解题意背模板就行,稠密图使用邻接矩阵建图用dijistra朴素版,稀疏图使用邻接表用dijistra(堆优化版)。Bellman_ford算法理清楚松弛操作。
2024-08-04 17:49:59 466
原创 【c++刷题笔记-图论】day58:拓扑排序、dijkstra朴素版
拓扑排序解决有向图是否有环,和循环依赖问题。dijistra解决求最短路径的问题,不允许有负权值。可以背模板。
2024-08-02 11:26:41 256
原创 【c++刷题笔记-图论】day57:53.寻宝
最小生成树模板题,使用prim算法和kruskal算法。弄清楚原理后背模板。prim算法适用于稠密图,时间复杂度是O(n^2),kruskal算法适用于稀疏图,时间复杂度是O(nlogn)。都是采用贪心策略。
2024-08-01 11:09:01 243
原创 【c++刷题笔记-并查集】day55:107.寻找存在的路径
模板记住,并查集1.用于寻找根结点。2.用于将两个结点放入一个集合中。3.判断是否在同一个集合内。
2024-07-30 15:53:34 250
原创 【c++刷题笔记-图论】day54:110.字符串接龙 、105.有向图的完全可达性 、106.岛屿的周长
遇到图的问题一般都dfs和bfs的题,但是有一部分可以不用dfs或者bfs来做,多思考避免出现思维定式。
2024-07-29 12:58:14 294
原创 【c++刷题笔记-图论】day52: 101.孤岛的总面积 、102.沉没孤岛 、103.水流问题 、104.建造最大岛屿
使用dfs或者bfs模板,再找规律,从四边开始遍历和整体替换值、使用map存岛屿的面积。
2024-07-27 12:18:13 350
原创 【c++刷题笔记-图论】day51:99.岛屿数量、100.岛屿的最大面积
dfs和bfs都是做图的方法,理解题意看看使用什么方法。bfs写法是有模板的,可以背下来。
2024-07-26 11:40:58 195
原创 【c++刷题笔记-单调栈】day48: 739. 每日温度 、496.下一个更大元素 I 、503.下一个更大元素II
单调栈,单调递增是求下一个更大的元素,单调递减是下一个更小的元素。单调栈就是记录之前遍历过的元素。
2024-07-23 11:49:37 410
原创 【c++刷题笔记-动态规划】day47: 647. 回文子串、 516.最长回文子序列
回文系列问题,从两边的方向考虑,中间为回文,左右相同则为回文,左右不同则不为回文。并且是从底向上,从左到右遍历。
2024-07-22 15:08:35 262
原创 【c++刷题笔记-动态规划】day45: 115.不同的子序列 、583. 两个字符串的删除操作 、 72. 编辑距离
编辑距离问题,初始化每个字符修改的次数。然后统计删除操作的个数。
2024-07-20 10:51:07 363
原创 【c++刷题笔记-动态规划】day44:1143.最长公共子序列 、 1035.不相交的线 、 53. 最大子序和 、392.判断子序列
子序列问题,判断dp数组的递推就行了。
2024-07-19 09:24:57 238
原创 【c++刷题笔记-动态规划】day43: 300.最长递增子序列 、 674. 最长连续递增序列、 718. 最长重复子数组
子序列和子数组问题,使用以i-1为结尾统计每一个最大值。
2024-07-18 12:28:21 242
原创 【c++刷题笔记-动态规划】day42:188. 买卖股票的最佳时机 IV、309. 买卖股票的最佳时机含冷冻期、714. 买卖股票的最佳时机含手续费
股票问题,分清楚状态就很容易做了。持有状态分为前几天一直持有的状态、前几天不持有今天买入的状态。不持有状态分为前几天一直不持有状态,前几天持有今天卖出状态。
2024-07-18 11:27:11 219
原创 【c++刷题笔记-动态规划】day41: 121. 买卖股票的最佳时机、122.买卖股票的最佳时机II 、
两个状态,持有和不持有。持有是前几天买入没有卖出的状态和今天刚刚买入的状态。不持有是前几天卖出和今天卖出的状态。dp数组初始化第一天持有就一定是第一天买入的。今天依赖前几天的状态取最大值。
2024-07-16 22:41:37 540
原创 【c++刷题笔记-动态规划】day40: 198.打家劫舍 、 213.打家劫舍II 、 337.打家劫舍III
打家劫舍问题有俩个状态,偷和不偷。依赖前两个状态。遇到循环问题分为两种情况讨论,[0,n-2],[1,n-1]。树形dp使用长度为2的数组,下标0表示不偷,下标1表示偷。利用这两个状态进行推导。
2024-07-15 11:51:18 373
原创 【c++刷题笔记-动态规划】day38: 322. 零钱兑换 、 279.完全平方数 、139.单词拆分
遇到求数量题可以尝试使用递推公式为dp[j-weight[i]]+1。
2024-07-14 17:29:22 247
原创 【c++刷题笔记-动态规划】day37:完全背包理论基础、518.零钱兑换II、377. 组合总和 Ⅳ、卡码网:57. 爬楼梯
完全背包,先遍历物品再遍历背包是求组合数,先遍历背包再遍历物品是求排列数。求组合的个数使用dp[j]+=dp[j-nums[i]];
2024-07-12 13:30:03 386
原创 【c++刷题笔记-动态规划】day36:1049. 最后一块石头的重量 II 、 494. 目标和 、 474.一和零
需要掌握技巧,抽象出背包问题,还有解决多维度的背包的情况。
2024-07-11 11:17:29 294
原创 【c++刷题笔记-动态规划】day33: 62.不同路径 、 63. 不同路径 II 、343. 整数拆分 、96.不同的二叉搜索树
动态规划是由多个重复的子问题组成,如何解决这些子问题就是思考的方向。分析出递推公式和初始化dp数组以及确定遍历顺序。
2024-07-09 10:47:44 416
原创 【c++刷题笔记-动态规划】day32: 509. 斐波那契数 、 70. 爬楼梯 、 746. 使用最小花费爬楼梯
理解dp数组的定义,它代表什么很重要。初始化,需要考虑清楚。递推公式需要理解。
2024-07-08 12:07:11 261
原创 【c++刷题笔记-贪心】day30:56. 合并区间 、 738.单调递增的数字
贪心算法,需要一定的技巧,覆盖区间可以直接用back()函数修改右边界。修改数字可以使用flag来记录需要修改的数字的下标。
2024-07-06 15:19:19 292
原创 【c++刷题笔记-数组】day29:452. 用最少数量的箭引爆气球、 435. 无重叠区间 、 763.划分字母区间
区间覆盖问题,先排序,判断好边界。
2024-07-05 17:07:03 356
原创 【c++刷题笔记-贪心】day28: 134. 加油站 、 135. 分发糖果 、860.柠檬水找零 、 406.根据身高重建队列
贪心就是以局部推全局并且没有反例的情况,当遇到不同维度的贪心时,需要分开讨论。
2024-07-05 15:04:01 473
原创 【c++刷题笔记-贪心】day27: 122.买卖股票的最佳时机II 、 55. 跳跃游戏 、 45.跳跃游戏II 、 1005.K次取反后最大化的数组和
贪心没有规律。需要总结,从局部最优推到全局最优。
2024-07-03 14:17:06 257
原创 【c++刷题笔记-贪心】day26:455.分发饼干 、376. 摆动序列 、53. 最大子序和
贪心题就是需要总结,以小见大。通过局部最优判断出整体最优。
2024-07-02 11:21:38 179
原创 【c++刷题笔记-回溯】day25:491.递增子序列 、46.全排列 、47.全排列 II、332.重新安排行程、51.N皇后
回溯去重逻辑需要记清楚,分解大问题为小问题,然后依次解决。回溯不清楚一定要画图理解。
2024-07-01 13:37:10 268
原创 【c++刷题笔记-回溯】day24:93.复原IP地址 、 78.子集 、 90.子集II
需要在字符串中加入同一个字符时,使用添加的字符做标记进行分割。子集问题在每次递归开始时统计。去重使用树枝和树层去重逻辑,前一个标记为false时表示是回溯回来的表示在同一层,所以需要去重。
2024-06-29 12:01:52 191
原创 【c++刷题笔记-回溯】day22: 77. 组合 、 216.组合总和III 、 17.电话号码的字母组合
利用好回溯模板,注意结束条件和选择对象。将选取的对象抽象为树结构,画图出来判断出递归的条件。
2024-06-27 11:17:13 284
原创 【c++刷题笔记-二叉树】day21: 669. 修剪二叉搜索树 、108.将有序数组转换为二叉搜索树 、 538.把二叉搜索树转换为累加树
建树和修改树,可以考虑使用左右子树接受递归的值,达到删除和修改的要求。
2024-06-26 16:20:44 206
原创 【c++刷题笔记-二叉树】day20: 235. 二叉搜索树的最近公共祖先 、 701.二叉搜索树中的插入操作 、 450.删除二叉搜索树中的节点
利用好二叉搜索树的特性,二叉树插入的时候只需要在空结点处插入,二叉树搜索删除操作需要判断是否为最左子树。
2024-06-25 11:45:28 232
原创 【c++刷题笔记-二叉树】day18: 530.二叉搜索树的最小绝对差 、 501.二叉搜索树中的众数 、 236. 二叉树的最近公共祖先
可以用额外结点来接收前一个结点。统计结点频率可以使用一边统计一边更新的方式。把问题划分为多个子问题,在一对一解决。
2024-06-24 12:48:35 145
原创 【java开发笔记】RabbitMQ--超时队列和死信队列
死信队列(Dead Letter Queue, DLQ)是一种特殊的消息队列,用于存储无法被正常消费的消息。超时队列是一种用于处理需要在指定时间内被处理的消息队列。如果消息在设定的时间内没有被消费,则会被视为超时消息。
2024-06-23 15:48:51 617
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人