- 博客(12)
- 收藏
- 关注
原创 二叉树-层次遍历介绍与经典问题(1)
层次遍历在二叉树的遍历分类中属于广度优先搜索这一类(建议读者先去了解一下广度优先搜索与深度优先搜索),基本过程如下:层次遍历从根节点开始,先访问根节点下面一层全部元素,再访问之后的层次。从图中可以看到是从左到右去一层一层遍历二叉树,先访问3,再访问3的左右子孩子 9 和 20,之后分别访问 9 和 20的左右子孩子,最后得到结果[3,9,20,8,13,15,17]。问题是如何保存遍历过的子孩子?使用队列来存储能完美解决上述问题。配合着图阅读3入队3出队,9和20入队,保存到队列中。
2023-12-24 14:43:49
856
1
原创 栈-栈的经典算法问题(最小栈)
对于栈来说,如果一个元素a入栈时,栈内有其他元素b,c,d,那么无论这个栈在之后经历了什么操作,只要a在栈中,b,c,d就一定在栈中,因为在a被弹出之前,b,c,d 不会被弹出。因此我们可以使用一个辅助栈,与元素栈同步插入和删除,用于存储与每个元素相应的最小值。,设计一个支持push,pop,top操作,并能在常数时间内检索到最小元素的栈。那么,我们可以在每个元素a入栈时把当前栈的最小值m存储起来。在任意时刻,栈内元素的最小值就存储在辅助栈的栈顶元素中。int getMin() 获取堆栈中的最小元素。
2023-12-17 12:46:34
770
1
原创 数据结构-Hash(哈希)基本特征
HashMap的实现原理是先要找到要存放数组的下标,如果是null的就存进去,如果不是null的就先判断key值是否一样,如果一样就替换,如果不一样就以链表的形式存在链表中(从JDK8开始,根据元素数量选择使用链表还是红黑树存储。例如上面存放7,8,9时,7直接存入索引为0的位置。8本来应该存到索引为1的位置,但是已经满了,所以向后找,索引3的位置为null,所以8存到索引3的位置,同理9存到6的位置。元素时,会先将目标位置前后的空间搜索一下,将标记为null的位置回收掉,这样大部分不用的位置就收回来了。
2023-12-15 16:27:02
1211
原创 栈-栈基础(理解栈手写栈)
采用顺序表实现的栈,内部以数组为基础,实现对元素的存取操作。在应用中还要注意每次入栈之前先判断栈的容量是否够用,如果不够用,可以进行扩容。,栈和线性表的最大区别就是数据的存取操作被限制了,其插入和删除只允许在线性表的一段进行。在链表一章,我们介绍过没有虚拟节点时对链表头元素进行插入和删除的操作方法,与这里基于链表实现栈是完全一致的。栈是很多表达式、富豪等运算的基础,也是递归的底层实现。链表也可以实现栈,插入和删除都在头节点进行就可以了。栈是比较特殊的线性表,又称为。,删除元素的操作称为。
2023-12-13 16:52:40
500
1
原创 数组---双指针思想+删除元素专题
例如,函数返回的新长度为 2 ,而 nums = [2,2,3,3] 或 nums = [2,2,0,0],也会被视作正确答案。给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。[1,2,2,2,3,3,3,5,5,7,8],重复元素只保留一个。解释:函数应该返回新的长度 5 , 并且原数组 nums 的前五个元素被修改为 0, 1, 2, 3, 4。输入:nums = [0,0,1,1,1,2,2,3,3,4]
2023-12-12 13:57:24
909
2
原创 数组-数组基础+基础数组LeetCode题目
第二章内容是数组,此系列仅根据我本人学习顺序书写,写这篇文章时,前一章链表还有一些经典LeetCode没有写入博文,但是不影响学习基础的数据结构知识。
2023-12-09 13:56:10
822
原创 链表系列---链表反转拓展(包含leetcode题目 持续更新题目版)
给你单链表的头指针 head 和两个整数left和right,其中。请你反转从位置left到位置right的链表节点,返回 反转后的链表。示例:输入:head = [1,2,3,4,5], left = 2, right = 4输出:[1,4,3,2,5]
2023-12-05 17:03:58
377
原创 链表-链表反转(含leetCode206)
LeetCode206 先看题:给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。示例(不放过多示例,具体前方leetcode查看):输入:head = [1,2,3,4,5]输出:[5,4,3,2,1]
2023-12-01 17:53:23
362
原创 Java自定义异常
当程序中出现了某些“错误”(比如让用户输入年龄并进行判断是否在规定范围内,如果不在范围内抛出异常),但该错误信息并没有在Throwable子类中描述处理处理,这个时候可以自己设计异常类,用于描述该错误信息。
2023-11-06 21:16:37
60
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人