
恋上数据结构与算法:第一季
复杂度、动态数组、链表、栈、队列、二叉树、二叉搜索树、AVL树、B树、红黑树、集合、映射、哈希表、二叉堆、优先级队列、哈夫曼树、Trie
zheng_zq666
一只Java后端程序猿
邮箱:zhengzhenqin666@163.com
展开
-
恋上数据结构与算法:哈希表02(二十二)
文章目录(一)哈希表(Hash Table):需求分析(二)哈希表(Hash Table):clear方法(三)哈希表(Hash Table):put方法(四)哈希表(Hash Table):compare(基本处理)(五)哈希表(Hash Table):compare(其它情况)(六)哈希表(Hash Table):compare(分析测试)(七)哈希表(Hash Table):get方法(八)哈希表(Hash Table):containsKey方法(九)哈希表(Hash Table)原创 2020-07-18 23:55:50 · 316 阅读 · 0 评论 -
恋上数据结构与算法:哈希表01(二十一)
文章目录(一)TreeMap的分析(二)需求分析(三)哈希表(Hash Table):简介(四)哈希表(Hash Table):哈希冲突(Hash Collision)(五)哈希表(Hash Table):JDK8的哈希冲突解决(六)哈希表(Hash Table):哈希函数(七)哈希表(Hash Table):哈希值的计算(int & float)(八)哈希表(Hash Table):哈希值的计算(long & double)(九)哈希表(Hash Table):哈希值的计原创 2020-07-17 17:22:32 · 283 阅读 · 0 评论 -
恋上数据结构与算法:映射(二十)
文章目录(一)映射(Map):简介(二)映射(Map):接口设计(三)映射(Map):Node(一)映射(Map):简介注意:有些编程语言也把映射(Map)称为字典(dictionary),如上图,由一个唯一的关键字(key)可以查询出一系列信息(value)(二)映射(Map):接口设计注意:如果使用二叉树来存储一对映射,一个节点要存储key和value大致代码如下:(三)映射(Map):Node...原创 2020-07-16 17:58:32 · 295 阅读 · 0 评论 -
恋上数据结构与算法:集合(十九)
文章目录(一)集合(Set):简介(二)集合(Set):ListSet(三)集合(Set):TreeSet(四)集合(Set):复杂度分析(五)集合(Set):TreeSet的局限性(六)集合(Set):作业题(一)集合(Set):简介(二)集合(Set):ListSet我们用链表实现集合(ListSet)注意:之前的动态数组和链表有索引,可以使用for循环遍历,但集合没有索引,需要提供遍历接口首先写一个Set接口,如下:public interface Set<E>原创 2020-07-15 22:13:00 · 471 阅读 · 0 评论 -
恋上数据结构与算法:红黑树02(十八)
文章目录(一)红黑树(Red Black Tree):删除(需求分析)(二)红黑树(Red Black Tree):删除(RED节点)(三)红黑树(Red Black Tree):删除(BLACK节点)(四)红黑树(Red Black Tree):删除(拥有1个RED子节点的BLACK节点)(一)红黑树(Red Black Tree):删除(需求分析)B树中,最后真正被删除的元素都在叶子节点中(二)红黑树(Red Black Tree):删除(RED节点)(三)红黑树(Red Black原创 2020-07-15 11:43:54 · 397 阅读 · 0 评论 -
恋上数据结构与算法:红黑树01(十七)
文章目录原创 2020-07-13 21:03:52 · 357 阅读 · 0 评论 -
恋上数据结构与算法:B树(十六)
文章目录(一)初识红黑树(Red Black Tree)(二)初识B树(B-tree)(三)B树(B-tree):m阶B树的性质(四)B树(B-tree):二叉搜索树(五)B树(B-tree):添加(六)B树(B-tree):上溢的解决(七)B树(B-tree):删除(八)B树(B-tree):下溢的解决(九)B树(B-tree):四阶B树(十)B树(B-tree):补充(一)初识红黑树(Red Black Tree)注意:红黑树的叶子节点跟普通二叉树的叶子节点有些不同,红黑树原创 2020-07-12 17:22:52 · 296 阅读 · 0 评论 -
恋上数据结构与算法:AVL树(十五)
文章目录(一)二叉搜索树的复杂度分析(二)平衡二叉搜索树(Balanced Binary Search Tree):前提知识(三)平衡二叉搜索树(Balanced Binary Search Tree):改进二叉搜索树(四)平衡二叉搜索树(Balanced Binary Search Tree):基本介绍(五)AVL树:基本概念(六)AVL树:添加导致的失衡(七)AVL树:LL – 右旋转(单旋)(八)AVL树:RR – 左旋转(单旋)(九)AVL树:LR – RR左旋转,LL右旋转(双旋原创 2020-07-11 17:36:56 · 494 阅读 · 0 评论 -
恋上数据结构与算法:二叉搜索树02(十四)
文章目录原创 2020-07-09 16:34:33 · 399 阅读 · 0 评论 -
恋上数据结构与算法:二叉树的遍历(十三)
文章目录(一)原创 2020-07-07 17:18:15 · 412 阅读 · 2 评论 -
恋上数据结构与算法:二叉搜索树01(十二)
文章目录(一)需求分析原创 2020-06-27 17:51:53 · 410 阅读 · 0 评论 -
恋上数据结构与算法:二叉树的介绍(十一)
文章目录(一)树的概念(二)二叉树的概念及其性质(一)树的概念(二)二叉树的概念及其性质原创 2020-06-24 22:13:25 · 1242 阅读 · 1 评论 -
恋上数据结构与算法:队列(十)
文章目录(一)队列(Queue)的简介(二)队列(Queue)的设计(三)队列(Queue)的实现原创 2020-06-22 22:46:10 · 294 阅读 · 0 评论 -
恋上数据结构与算法:栈(九)
文章目录(一)栈(Stack)的简介(二)栈(Stack)的设计(三)栈(Stack)的实现(四)栈(Stack)的源码(五)应用举例:浏览器的前进和后退(六)练习:有效的括号01(七)练习:有效的括号02(八)练习:有效的括号03(九)补充(一)栈(Stack)的简介(二)栈(Stack)的设计注意:对于栈,我们需要频繁的操作尾部元素,所以使用动态数组和链表(双向链表)都可以,对尾部元素进行增删操作的复杂度都是O(1)(三)栈(Stack)的实现第一种实现方法:继承,如原创 2020-06-21 22:10:37 · 388 阅读 · 0 评论 -
恋上数据结构与算法:双向循环链表(八)
文章目录原创 2020-06-20 21:58:09 · 363 阅读 · 0 评论 -
恋上数据结构与算法:单向循环链表(七)
文章目录原创 2020-06-20 16:21:52 · 260 阅读 · 0 评论 -
恋上数据结构与算法:普通双向链表(六)
文章目录原创 2020-06-20 14:35:19 · 297 阅读 · 0 评论 -
恋上数据结构与算法:复杂度分析(五)
文章目录原创 2020-06-19 21:33:02 · 257 阅读 · 0 评论 -
恋上数据结构与算法:单向链表练习(四)
文章目录(一)练习01:删除节点(二)练习02:反转链表(递归)(三)练习03:反转链表(迭代)(四)练习04:环形链表(一)练习01:删除节点https://leetcode-cn.com/problems/delete-node-in-a-linked-list/我们的目标是删除指定的node,但是却不提供查询前一个node的方法我们可以换一种思路,把后一个节点的值,覆盖掉要删除的节点的值(用next可以获取下一个节点)然后把值为9的节点的next指向next的next,如下:原创 2020-06-19 11:31:48 · 318 阅读 · 1 评论 -
恋上数据结构与算法:普通单向链表(三)
文章目录(一)链表(Linked List)的简介(二)链表(Linked List)的接口设计(一)链表(Linked List)的简介动态数组有个明显的缺点:可能会造成内存空间的大量浪费能否用到多少就申请多少内存?链表可以办到这一点链表是一种链式存储的线性表,所有元素的内存地址不一定是连续的(二)链表(Linked List)的接口设计...原创 2020-06-18 22:39:45 · 322 阅读 · 0 评论 -
恋上数据结构与算法:动态数组(二)
文章目录(一)数据结构(二)线性表(三)数组(四)动态数组(Dynamic Array)接口设计(五)动态数组(Dynamic Array)接口实现(存储int类型)(一)数据结构(二)线性表(三)数组(四)动态数组(Dynamic Array)接口设计JDK是会提供一个ArrayList类,但是我们先自己写一个动态数组该有的成员变量如下:(五)动态数组(Dynamic Array)接口实现(存储int类型)一个动态数组应该有:size(容量/元素的数量)和elements原创 2020-06-17 13:30:44 · 506 阅读 · 0 评论 -
恋上数据结构与算法:复杂度(一)
第一阶段的大纲文章目录(一)开发环境搭建(二)斐波那契数(三)算法的评估(四)时间复杂度的估算(五)大O表示法(六)斐波那契数复杂度分析(七)leetcode(一)开发环境搭建(二)斐波那契数题目:求第n个斐波那契数(fibonacci number)分析:斐波那契数就是下一个数等于前面两个数相加,如:0 1 1 2 3 5 8 13 …我们先用递归(自己调用自己)实现,如下: public static int fib1(int n) { if (原创 2020-06-15 17:33:24 · 486 阅读 · 1 评论