- 博客(27)
- 收藏
- 关注
原创 刷怪日记-01 背包理论问题(一维数组实现)
二维数组遍历背包不采用倒序遍历,是因为dp[i] [j]是由其上方推导出来的,并不会覆盖本层dp[i] [j]的值。dp[2] = dp[2 - weight[0]] + value[0] = 15 (dp数组已经都初始化为0)按照上述推导公式,遍历物品i时,发现物品i被放进去俩次,dp[2]等于30。假设物品价值都是大于0的,所以dp数组初始化的时候,都初始为0就可以了。正上方**推导出来,并且每一个维度都可以覆盖上一个维度的值。遍历背包与二维数组方式不一样,一维数组采用倒序方式,主。
2024-03-06 10:45:04
411
1
原创 刷怪日记-01背包理论问题(二维矩阵实现)
本题采用二维数组进行解题,那么dp[i] [j]表示从下标0-i的物品任意选择,放进容量为j背包,价值总合最大是多少。i 表示物品第几个物品,j 表示背包容量大小。
2024-03-06 10:23:04
698
原创 刷怪日记-不同路径Ⅱ
动态规划的思想,由上一步状态推出下一步状态,因此在统计到[i, j]格的路径之前,可以先统计[i-1, j]、[i, j-1]的路径,再通过前一步格子求出下一步格子的路径。,假如说在第一行或第一列碰见障碍物(1),其同一行\同一列的后面元素路径数均为0,因为后面走不通啦。矩阵[m, n]的第一行和第一列,均只能单方向前进,因此行进路径只有。若排除上述情况,那么在某格遇见障碍物将该格设置为0。
2024-02-29 21:13:35
493
原创 刷怪日记-用最少数量的箭引爆气球
为了尽可能让气球重叠,需要对数组进行排序,依据[a,b]中a或b排序均可,只是计算不同,本题是对a进行排序。如果气球重叠了,重叠气球中右边界的最小值之前的区间一定需要一个弓箭。贪心算法,局部最优推全局最优。
2024-02-29 21:11:54
368
原创 刷怪日记-重新安排行程
将每个航班的终点站进行对比,小的排前面,从而实现字母小的先使用,比如说初始站相同,那么终点站字母小的就在前面先使用了。回溯遍历的过程中,遇到的机场个数,如果达到了(航班数量+1),那么就找到了一个行程,把所有航班串在一起了。通过used[]数组记录航班使用情况,已使用记录为false,从而避免重复。
2024-02-21 23:40:44
335
原创 刷怪日记-从中序与后序遍历序列构造二叉树
观察中序和后序遍历数组,可以发现后序遍历数组末尾元素往往是根节点,例如末尾元素3就是根节点,而元素3在中序遍历数组中刚好可以切割数组为左右子树俩部分。
2024-01-13 20:00:59
414
1
原创 刷怪日记-自底向下解决二叉平衡树
明确递归三步曲,自底向上递归,时间复杂度为O(n),每个节点仅访问依次,空间复杂度O(n),取决于递归调用层数,递归调用层数不会超过n
2024-01-12 20:54:42
453
1
原创 刷题日记-利用递归和栈实现二叉树三种遍历方式
递归和迭代主要区别在于:**递归的时候隐式的维护了一个栈,相当于不停的自身调用自身,迭代则是需要显式的将这个栈实现出来**
2024-01-02 21:25:36
1865
原创 简单易懂JVM系列(三)-根节点枚举及相关算法实现细节
这部分知识在面试过程中频繁出现,了解这部分知识一方面可以使我们对于接下来的垃圾收集器更好理解,另一方面我们可以更深入探讨这些方法细节,避免仅停留于表面概念。那么接下来就进入这部分知识吧!
2023-09-07 16:54:01
242
原创 简单易懂JVM系列(二)-垃圾回收概述及算法
在1960年麻省理工学院诞生的Lisp是第一门使用动态分配和垃圾收集技术的语言,其作者提出了关于垃圾收集的三个经典问题。 - 哪些内存需要回收? - 什么时候回收? - 如何回收?
2023-08-28 14:47:58
90
1
原创 深入刨析ArrayList和LinkedList迭代器差异
大多数列表迭代器相关文章和教学视频对于迭代器浅尝辄止,使得我们继续学习集合框架源码过程中频频出现问题。我写这篇文章初衷,就是因为我在学习迭代器时我发现初始化一个迭代器时,此时迭代器是指向第一个元素还是第一个元素前面呢,因此我带着好奇心去研究源码才明白。那么接下来让我们深入理解**不同list实现类的迭代器**。
2023-08-24 19:17:16
244
1
原创 简单易懂JVM系列(一):JVM内存模型
JVM内存模型是管理Java程序运行时内存的结构。它包括堆、方法区、虚拟机栈等区域。堆用于存储对象,方法区保存类信息和常量池,虚拟机栈和本地方法栈处理方法调用。堆可以自动调整大小,栈为每个线程分配调用栈。正确的内存配置和管理是确保程序稳定性和性能的关键。内存泄漏和溢出可能导致问题。了解JVM内存模型及其区域对于Java开发至关重要。
2023-08-09 12:20:11
104
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人