![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法学习
yindarui
这个作者很懒,什么都没留下…
展开
-
栈(一)——单调栈
前言单调栈是一种基于栈的结构,基本操作包括弹栈出栈,但是需要维持栈中的数据是严格有序的。单调递增栈:从栈底到栈顶是从大到小单调递减栈:从栈底到栈顶是从小到大这就需要我们在栈基本操作的基础上进行一些逻辑的控制。这样的一个数据结构在解决某些问题时会变得非常高效。单调栈介绍单调栈操作过程:(单调递增)当栈为空时,元素直接压栈当栈不为空时,比较压入的元素和栈顶元素,如果插入的元素大于栈顶,那么就直接压入;如果不大于,那么就一直弹栈,知道栈顶元素小于待插入的元素时,压入该元素。单调栈个人原创 2020-08-06 14:08:43 · 212 阅读 · 0 评论 -
布隆过滤器学习和部分实现
算法1. 布隆过滤器1.1简介布隆过滤器实际上是一种数据结构,它可以实现在某些特定场景下的高效的查找。这种高效体现在,**在很低的存储空间上进行快速的定位。**我们拿黑名单举例,在搜索引擎中,想定位某个网站是否是黑名单,把待查询的URL输入布隆过滤器中,此时如果是黑名单,那么一定可以查出来。布隆过滤器存在一定的失误率,即一个输入不在过滤器中,我也有可能判断其在过滤器中。拿黑名单举例,如果一...原创 2020-04-06 17:09:22 · 147 阅读 · 0 评论 -
算法学习之路(4)--- 并查集
实现并查集并查集的定义就是(非严格):每个不同集合的有一个代表节点同一个集合内的对象的父节点指向该代表节点该代表节点的父节点指向自己并查集的相关注意:用户必须一次性给出所有的节点,将这些节点放入并查集中并查集存放的是元素,他是在以一种特殊的方式组织这些元素,使得某些操作变得简单并查集的基本操作:合并:两个集合合并,数量小的集合将挂载在大的集合的代表节点上查找:给出两个...原创 2020-04-04 19:16:33 · 104 阅读 · 0 评论 -
算法学习之路(3)--二叉树基础
二叉树的基本操作继续看左神的视频,听他的思路之后自己写代码实现,过程中遇到很多问题,好在一一克服。写了很多注释和自己对其思路的理解。一下代码包括了:二叉树前中后序遍历的递归和非递归层次遍历的非递归二叉树深度二叉树的序列化和反序列化非递归实现判断二叉树是否是AVL树判断二叉树是否是完全二叉树并计算其节点数(时间复杂度小于O(N))。import java.util.*;imp...原创 2020-04-03 18:38:10 · 92 阅读 · 0 评论 -
算法学习之路----桶结构
桶结构:利用数组实现。即一个萝卜一个坑利用桶进行的排序算法:对数据有一定的要求(这也是桶排序的瓶颈) 计数排序 基数排序利用桶结构来解决实际问题:给定一个数组,求在数组有序的情况下,相邻的两个数的最大差值,时间复杂度控制在O(N),且不可用非基于比较的排序。public class Bucket { public static int maxGap(int[] ...原创 2020-03-23 18:50:50 · 1961 阅读 · 0 评论 -
算法学习之路--堆结构和堆排序
主要参考左神的算法课程和《算法导论》。堆介绍堆结构是一种非常重要的结构,就算被火车撞了也不能忘(引用自左程云哈哈哈)。重要是因为其特殊的结构(叶子节点和根节点满足一定关系)在很多实际场合可以很好适用。堆主要包括两个操作:(利用数组实现)* 堆的建立* 堆的调整直接上代码:注释基本上完整,参考的左神的思路,但是有个问题,左神在heapsort中 的while(size > 0)貌似...原创 2020-03-22 17:18:15 · 102 阅读 · 0 评论