- 博客(11)
- 收藏
- 关注
原创 代码随想录 | 动态规划(1)
目录动态规划基础解题步骤如何Debug 509. 斐波那契数70. 爬楼梯746. 使用最小花费爬楼梯62.不同路径 63. 不同路径 II注意语法别问为什么突然开始动态规划了,因为没时间了啊啊!(等周末考完csp回头再补之前的)动态规划,英文:Dynamic Programming,简称DP,如果某一问题有很多重叠子问题,使用动态规划是最有效的。所以动态规划中每一个状态一定是由上一个状态推导出来的,这一点就区分于贪心,贪心没有状态推导,而是从局部直接选最优的。状态转移公式(递推公式)是很重要,但动规不仅仅
2025-03-29 18:39:19
781
原创 代码随想录 | 二叉树部分(2)
但是,这里可能存在问题,因为此时curList已经被修改,加入队列的两个路径可能共享同一个Deque对象,导致路径被错误地修改。或者,可能没有创建新的路径副本,导致在后续操作中修改了之前已经放入队列的路径。也就是说,在swap方法里,a和b只是root.left和root.right的副本,交换这两个副本并不会影响原来的root.left和root.right。我先使用普通层序遍历的方法做了一下,遇见了很多对象引用的错误,在做题时一定要注意赋值时变量是否指向为同一个地址。这段代码的重点在于,通过使用递归,
2025-03-19 21:24:52
796
原创 代码随想录 | 栈与队列部分
栈Java 传统的Stack类基于Vector实现,但由于继承了Vector,它暴露了遍历等不必要的接口。为了更符合严格的 LIFO 操作,推荐使用Deque(如ArrayDeque)来实现栈,这样既能完成 push/pop 操作,也能根据需要控制是否允许遍历。队列Java 通过Queue接口及其实现(如LinkedListArrayDeque)来实现 FIFO 结构。
2025-02-24 00:35:55
685
原创 代码随想录 | 哈希表部分
数组:适合数据范围有限且需要快速访问的场景。Set:适合去重或判断元素是否存在的场景。Map:适合统计频率或建立映射关系的场景。总结一下,当我们遇到了要快速判断一个元素是否出现集合里的时候,就要考虑哈希法。但是哈希法也是牺牲了空间换取了时间,因为我们要使用额外的数组,set或者是map来存放数据,才能实现快速的查找。如果在做题目的时候遇到需要判断一个元素是否出现过的场景也应该第一时间想到哈希法!1. 双指针法将时间复杂度:O(n^2)的解法优化为 O(n)的解法,也就是降一个数量级。
2025-02-19 09:40:59
722
原创 代码随想录 | 链表部分
/ 结点的值int val;// 下一个结点// 节点的构造函数(无参)// 节点的构造函数(有一个参数)// 节点的构造函数(有两个参数)
2025-02-17 23:20:34
1017
2
原创 代码随想录训练营第二天|977.有序数组的平方 、209.长度最小的子数组 、59.螺旋矩阵II
数组是存放在连续内存空间上的相同类型数据的集合。数组下标都是从0开始的数组内存空间的地址是连续的数组的元素是不能删的,只能覆盖Java的二维数组在内存中不是3*4的连续地址空间,而是四条连续的地址空间组成。
2024-07-22 03:04:35
672
原创 代码随想录算法训练营第一天 | 数组理论基础、704. 二分查找、27. 移除元素
由于笔者没有系统学过c++,仅在一年多之前学程设的时候用过c语言,所以希望在算法训练营的这段时间也能够学习和熟悉一下c++语法,故blog中可能出现部分对于c++基本语法的学习记录。数组理论基础对于C++而言:要注意vector 和 array的区别,vector的底层实现是array,严格来讲vector是容器,不是数组。cout是标准输出流对象,用于向控制台输出信息。它属于类,通常用于打印文本或其他数据到控制台。
2024-07-18 13:02:16
1079
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人