随笔分类 -  数据结构与算法

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

返回顶部
点击右上角即可分享
微信分享提示