错过春华 亦可秋实
二叉树的遍历 二叉树的遍历
   引言: 对于二叉树的递归遍历比较简单,所以本文主要想讨论的是非递归版。其中,中序遍历和前序遍历的非递归写法都比较简单,后序遍历最难。 一、二叉树节点表示public class TreeNode{ int val;
2021-07-09
LRU缓存和LFU缓存 LRU缓存和LFU缓存
   引言: 操作系统中的页面置换算法是很多缓存机制的基础,比较经典的就有LRU和LFU算法。当缓存数据的数量未达到容量大小时,能正常存入缓存的数据结构中;当缓存的数据容量达到了最大容量,而又有新的数据需要缓存时,就得考虑如何删除已存在的缓
2021-06-28
十大经典排序算法 十大经典排序算法
   引言: 排序算法是《数据结构与算法》中最基本的算法之一。这里对十大经典的排序算法做一下解释说明。不知道的道友可以来这里扫下盲。转自“菜鸟教程”。 说明  排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部
2021-05-02
最长递增子序列 最长递增子序列
   引言: 最长递增子序列问题是一个很基本、较常见的小问题,但这个问题的求解方法却并不那么显而易见,需要较深入的思考和较好的算法素养才能得出良好的算法。这个问题能运用学过的基本的算法分析和设计的方法与思想,能够锻炼设计较复杂算法的思维。转
2021-03-04
快速排序模板 快速排序模板
   引言: 快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用。 说明  快速排序算法经常被采用,而且快速排序也采用了分治的思想,因此很多软件公司的笔试面试,包括像腾讯,微软等知名IT公司都喜欢考这个,
2021-03-03
二进制状态压缩枚举子集 二进制状态压缩枚举子集
   引言: 二进制数可以用来表示一个状态,比如当我们需要去表示一个集合的子集时,可以用二进制数来表示该子集。 问题  比如有一个集合,集合中的元素为 {1, 5, 7, 9, 12},如何快速找到其所有的子集合呢。这就可以采用二进制来压
2021-02-27
并查集模板 并查集模板
   引言: 关于“并查集”的解释和使用场景网上有很多教程,这里就不在啰嗦了。仅提供代码模板方便知情人快速使用。 并查集的java实现// 开启了路径压缩和按秩合并的并查集 class UnionFind { int n
2021-02-14
滑动窗口的最大值 滑动窗口的最大值
   引言: LeetCode中遇到的一道题,记录一下。转自 求滑动窗口的最大值 问题定义  给定一个数组 nums 和滑动窗口的大小 k,要求找出所有滑动窗口中的最大值。(可以假设 k 总是有效的,在输入数组不为空的情况下,1 ≤ k
2021-02-04
滑动窗口中位数(优先队列 + 延迟删除) 滑动窗口中位数(优先队列 + 延迟删除)
   引言: LeetCode中遇到的一道题,记录一下。转自 求滑动窗口中的中位数 问题定义  中位数是有序序列最中间的那个数。如果序列的长度是偶数,则没有最中间的数;此时中位数是最中间的两个数的平均数。给你一个数组 nums,有一个长度
2021-02-03
约瑟夫环问题解释 约瑟夫环问题解释
   引言: 约瑟夫问题(有时也称为约瑟夫斯置换,是一个计算机科学和数学中的问题。在计算机编程的算法中,类似问题又称为约瑟夫环。又称“丢手绢问题”.) 约瑟夫问题 N个人围成一圈,第一个人从1开始报数,报M的将被杀掉,下一个人接着从1开始
2021-02-01
图的最短路径算法 图的最短路径算法
   引言: 图的最短路径问题是求图中两顶点间的最短路径问题。   在网图和非网图中,最短路径的含义不同。由于非网图它没有边上的权值,所谓的最短路径,其实就是指两顶点之间经过的边数最少的路径;而对于网图来说,最短路径是指两顶点之间经过的边
2021-01-22
连通图的最小生成树算法 连通图的最小生成树算法
   引言: 在线性表中,数据元素之间是被串起来的,仅有线性关系,每个数据元素只有一个直接前驱和一个直接后继。在树形结构中,数据元素之间有着明显的层次关系,并且每一层上的数据元素可能和下一层中多个元素相关,但只能和上一层中一个元素想关。这和
2021-01-21