随笔分类 - 数据结构与算法
摘要:LUR算法介绍 LRU(Least Recently Used),最近最少使用算法,从名字上可能不太好理解,我是这样记的:LRU算法,淘汰最近一段时间内,最久没有使用过的数据。 详细的介绍可以参考百度百科:https://baike.baidu.com/item/LRU 实现LUR的原理 本文使用H
阅读全文
摘要:一.问题背景 如果做过参加过面试或者做过一些面试题,应该知道特别经典的top K问题,比如“找出无序数组中的最大或者最小K个数”: 这种题可以排序后再输出最大或者最小的几个。但是不论是使用快排还是归并排序,毫无疑问,空间和时间复杂度的开销都是不满足面试官的要求的;而使用“堆”这种数据结构就比较好的解
阅读全文
摘要:代码如下: package cn.ganlixin.sort; import lombok.AllArgsConstructor; import lombok.Data; import org.junit.Test; import java.util.Objects; public class So
阅读全文
摘要:贪心:追求眼前利益最大化 例题1 加勒比海盗问题,海盗发现了很多宝藏,但是由于船的体积有限,所以只能运走总体积为C的宝藏,假设现在有n个宝藏,每一个宝藏的体积是Vi(0<i),宝藏不可以切割,请问,海盗船最多能运走多少个宝藏? 解析:将宝藏按照体积从小到大排序,然后在不超重的情况下,从小到大开始将宝
阅读全文
摘要:BFS访问二叉树 package cn.ganlixin.bfs; import java.util.LinkedList; import java.util.Queue; class TreeNode { int val; TreeNode left; TreeNode right; TreeNo
阅读全文
摘要:DFS的模板 判断能否从一个点走到终点 判断从一个点能否走到终点,如果能的话,记录路径 例题1:城堡问题 http://bailian.openjudge.cn/practice/2815 例题2:踩方块 http://bailian.openjudge.cn/practice/4103/ 例题3:
阅读全文
摘要:例题1:数字三角形 http://poj.org/problem?id=1163 首先使用递归的做法: 因为存在太多的重复计算,当数据量大的时候,就会严重超时。 可以将每一次递归过程中,算出的值存起来,如果下次再进行计算时,如果之前已经计算过(已经被存起来了),那么就直接取存的值。 动态规划 状态方
阅读全文
摘要:模板 精简版 例题1:家族关系 http://www.rqnoj.cn/problem/331 题目描述 若某个家族人员过于庞大,要判断两个是否是亲戚,确实还很不容易,现在给出某个亲戚关系图,求任意给出的两个人是否具有亲戚关系。 规定:x和y是亲戚,y和z是亲戚,那么x和z也是亲戚。如果x,y是亲戚
阅读全文
摘要:逆波兰表达式 http://bailian.openjudge.cn/practice/2694/ 逆波兰表达式的定义:1) 一个数是一个逆波兰表达式,值为该数2) "运算符 逆波兰表达式 逆波兰表达式" 是逆波兰表达式 ,值为两个逆波兰表达式的值运算的结果 上台阶 例题3: 放苹果 http://
阅读全文
摘要:基于逐个尝试答案的一种问题求解策略 例题1:完美立方 http://poj.org/problem?id=1543 总结:即便是枚举,也是有技巧的,不要真的枚举所有的例子,有些例子是可以事先过滤掉的,这会省掉一部分时间。 例题2:生理周期 http://poj.org/problem?id=1006
阅读全文
摘要:algorithm min(a,b)和max(a,b) sort快排 binary_search二分查找 vector(数组) stack(栈) queue(普通队列) deque(双向队列) list(双向链表) set/multiset(集合) multiset/set使用平衡二叉树的数据结构,
阅读全文
摘要:冒泡排序 void BubbleSort(int a[], int n) { int i, j; for (i = 0; i < n; i++) { for (j = i+1; j < n; j++) { if (a[i] > a[j]) { int t = a[i]; a[i] = a[j]; a
阅读全文
摘要:目录 一.树的基本术语 二.二叉树 2.1 二叉树的定义 2.2 满二叉树与完全二叉树 三.二叉排序树 四.平衡二叉树 五.B-树 六.B+树 七.红黑树 一.树的基本术语 介绍术语的时候,结合下面这幅图进行解释: 结点:树中的一个独立单元。包含一个数据元素及若于指向其子树的分支,如图中的A、B、C
阅读全文
摘要:#include #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0 #define MAXSIZE 20 //最多容纳19个元素,front之前的一个空间空出来 typedef int Status; typedef int QElemType; typedef struct { ...
阅读全文
摘要:#include #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0 #define MAXSIZE 20 typedef int QElemType; typedef int Status; typedef struct { QElemType data[MAXSIZE]; int...
阅读全文