- 博客(8)
- 收藏
- 关注
原创 [基础数据结构|Java实现]二:二叉树(一篇搞懂二叉树基本操作)
[基础数据结构|Java实现]二:二叉树(一篇搞懂二叉树基本操作)本篇文章主要包括以下几个方面:二叉树的定义、二叉树的3种dfs遍历、二叉树的bfs遍历(层次遍历)、根据指定格式的描述来构造二叉树、根据后序和中序遍历的序列构造二叉树。第一部分:理论知识二叉树的定义每个父节点下面有0~2个节点,最上面的叫根节点,下面分别叫左右节点。每个节点都满足这种递归定义的要求。3种dfs遍历分别是先序遍历,中序遍历,和后序遍历举例:先序遍历结果(根左右):124536中序遍历结果(左根右):4
2022-04-01 15:20:03
852
原创 [Redis数据结构|Java实现] 二:字典(Map)
[Redis数据结构|Java实现] 二:字典(Map)[Redis数据结构|Java实现] 二:字典(Map)概念:Redis中的字典,底层是使用hashtable实现,一个哈希表里面可以有多个 哈希表节点,每个哈希表节点都保存着一个键值对。实现思路:哈希表实现:数组+链表哈希表的实现主要要考虑以下两个方面?解决方案:哈希表节点定义Map的常规操作实现put实现get实现(不要去遍历所有节点)扩容实现Redis里面扩容实现完整代码:测试代码:测试结果:[Redis数据结构|Java实现] 二:字典(Ma
2022-03-23 10:33:27
3247
原创 [基础数据结构|Java实现]一:HashSet
[基础数据结构|Java实现]一:HashSet实现思路:具体实现要求:Java实现代码:测试代码:测试结果:HashSet的基本概念:元素不能重复不能保证顺序💓为了实现简单,规定只能存储String,不能为Null,并且区分大小写。实现思路:底层用一个数组做为桶,然后每个桶都绑定一个链表;添加的每个元素都先计算其hash值,并对数组的长度取模,然后得到桶的索引,再利用equal判断是否需要添加到链表中即可。缺陷:java中的hashSet链表的长度达到某个值时,会自动转换为红黑树
2022-03-21 17:39:22
931
原创 [Redis数据结构|Java实现] 一:SDS简单动态字符串
[Redis数据结构|Java实现] 一:SDS简单动态字符串SDS的概念JAVA实现核心代码测试测试结果:SDS的概念SDS:保存了len和free属性,并保存了字节数组,同时以‘\0’结尾。可以在改变字符串长度的时候,减少内存的分配次数,提高性能。并且可以重用一部分c中的String Api.free属性为0,表示这个SDS没有未使用的空间。len的属性为5,表示这个SDS保存了5字节长的字符串。buf是一个char类型的数组,最后一个位置保存了’\0’(为了复用语言的api)。[
2022-03-18 11:40:37
3841
原创 【动态规划二:打家劫舍】
打家劫舍题目大意:有一排房间,不能偷相邻房间,每个房间都有一定数量的金额,怎么偷可以获取到最多的金额?输入:[1,2,3,1]输出:4解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。 偷窃到的最高金额 = 1 + 3 = 4 。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/house-robber著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。思路:你想
2022-02-17 16:06:30
168
原创 【动态规划一:爬楼梯】
【动态规划一:爬楼梯】爬楼梯题目大意:第n阶,可以由n-1和n-2阶爬上去,那么爬到第n阶有多少种方法?思路:代码实现:爬楼梯题目大意:第n阶,可以由n-1和n-2阶爬上去,那么爬到第n阶有多少种方法?思路:我们设 爬到第n阶,有 Sn 种方法。则:Sn=Sn-1+Sn-2 (可以由n-1和n-2阶爬上去)并且S0=S1=1 (因为S1=1,并且S2=2,所以S0=1)代码实现:递归实现(不提倡)我们很容易想到下面的递归代码,我们从n出发,一直递归到0和1,这是一种思路,但是时间复杂度比较
2022-02-15 11:01:09
204
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人