
数据结构
文章平均质量分 81
数据结构学习!
每天都要加油呀!
这些博客是笔者在学习过程中的笔记和心得,如有谬误,望君斧正
展开
-
Java优先级队列源码分析
在点进去看就是和我们一样的堆操作的逻辑了,jdk的优先级队列底层就是。,在点进去看就是和我们一样的堆操作的逻辑了,jdk的优先级队列底层就是。优先级队列(Priority Queue)也是队列。可以看到批量建堆的源码跟我们一样采用的也是。可以看到批量建堆的源码跟我们一样采用的也是。可以看到里面最重要的方法就是我们堆操作的。我们来看下如何给优先级队列添加元素。基本接口和队列保持一样。包下也有一个优先级队列。的方法就是我们堆操作的。原创 2023-06-15 22:36:59 · 605 阅读 · 0 评论 -
二叉堆(大顶堆、小顶堆)学习(使用java手写)
我们现在有一个需求,用来存放整数,要求需要提供三个接口我们可以用我们熟悉的数据结构去解决这些问题O(logn)那有没有更优的数据结构呢?当然有,那就是堆。原创 2023-06-15 22:34:12 · 2273 阅读 · 0 评论 -
LinkedHashMap 学习(手写)
LinkedHashMap学习,动手写简单的LinkedHashMap原创 2022-09-19 00:20:32 · 470 阅读 · 1 评论 -
HashMap学习(手写)
背了那么多HashMap的面试题感觉还是不会?手写一遍保证你记忆深刻!原创 2022-07-19 14:29:06 · 551 阅读 · 0 评论 -
红黑树学习,Java实现
红黑树学习!通俗但不易懂,请多看几遍!原创 2022-07-13 11:12:02 · 604 阅读 · 0 评论 -
队列学习、Java实现
文章目录1. 队列(双向链表实现)2. 队列(栈实现)3. 双端队列(双向链表实现)4. 循环队列5. 循环双端队列思维导图:1. 队列(双向链表实现)接口设计int size(); // 元素的数量boolean isEmpty(); // 是否为空void clear(); // 清空void enQueue(E element); // 入队E deQueue(); // 出队E front(); // 获取队列的头元素优先使用双向链表实现,因为队列主要是往头尾操作元素p原创 2022-03-10 16:42:19 · 508 阅读 · 0 评论 -
Levenshtein Distance编辑距离应用实践——拼写检查(Java fork/join框架实现)
文章目录1. 实现莱文斯坦距离算法1.1 算法原理分析1.2 代码实现2. 使用fork/join进行匹配2.1 单线程匹配2.2 fork/join多线程匹配2.3 传统多线程版本2.4 结果对比Levenshtein Distance,一般称为编辑距离(Edit Distance,Levenshtein Distance只是编辑距离的其中一种)或者莱文斯坦距离,算法概念是俄罗斯科学家弗拉基米尔·莱文斯坦(Levenshtein · Vladimir I)在1965年提出。编辑距离是针对二个字符串(例原创 2022-04-18 13:39:11 · 1020 阅读 · 0 评论 -
Java手写AVL树(非常详细)
文章目录1. 二叉搜索树复杂度2. BST的平衡3. 改进二叉搜索树4. 平衡二叉搜索树(Balanced Binary Search Tree)5. AVL树5.1 AVL树的相关概念及特点5.2 普通BST和AVL树添加对比6. AVL树设计6.1 继承结构6.2 普通BST添加导致失衡例子6.3 解决添加失衡——LL-右旋转(单旋)6.4 解决添加失衡——RR-左旋转(单旋)6.5 解决添加失衡——LR-RR左旋转,LL右旋转(双旋)6.6 解决添加失衡——RL-LL右旋转,RR左旋转(双旋)6.7原创 2022-04-08 17:36:04 · 3197 阅读 · 2 评论 -
动态数组学习,Java实现
文章目录1. 动态数组需要实现的接口2. 需要注意的点3. 代码1. 动态数组需要实现的接口1. int size();//元素的数量2. boolean isEmpty();//是否为空3. boolean contains(E element);//是否包含某个元素4. void add(E element);//添加元素到最后面5. E get(int index);返回index位置对应的元素6. E set(int index,E element);//设置index位置的元素7.原创 2022-03-10 16:39:12 · 305 阅读 · 0 评论