forethought.top的博客

for designing better code!

LRU cache简易实现

1. 什么是LRU cache? 就是一种缓存,算法思想是:将最近访问的数据挪动到头部,如果下次还是访问这个数据,那么就能在靠前的位置访问到 这点其实是运用了时间局部性原理:最近一次访问的位置,下一次也很可能访问 2. 实现思路: 使用双向链表 使用哨兵节点,pre 指向尾节点,ne...

2019-03-29 10:09:13

阅读数 22

评论数 0

布隆过滤器

什么是布隆过滤器?? 用于:百分百正确判断 存在某元素不在集合中 有概率误判 元素在集合中 描述: 是将元素映射到二进制位上,对于待检测的元素,可以检测映射到的二进制位是否都为1,如果不都为1,这表明这个元素一定不存在次集合中 如果全为1,这表明可能存在此集合中。 下图中:x,y,z都...

2019-03-26 22:17:23

阅读数 29

评论数 0

堆排序算法实现

堆排序:结构逻辑上是完全二叉树,但是可以使用顺序存储来实现 一些二叉树的区别: 二叉树:度数最大为2并且每个子树也是二叉树 满二叉树:每层节点都是满的,没有空缺,也就是,叶子节点只能出现在最后一层 完全二叉树:限制条件比满二叉树弱化,只需要前k-1层是复合满二叉树结构,最后一层的叶子节...

2019-03-10 14:35:06

阅读数 44

评论数 0

o(n)时间复杂度查找所有元素后面第一个比他大的数

1,输入n个无序整数 输出 每个数之后第一个比他大的数,要求时间o(n) 示例: 1,-1,2,3 输出: 2 2 3 解决思路:栈+栈底指针 入栈: 栈为空,入栈 1 -1< 栈底=1 入栈 1 -1 2 &...

2019-03-07 15:09:36

阅读数 158

评论数 0

大数乘法

给定两个长度不限的数字字符串,求乘积. 思路:如果是让你手算,你一定会列竖式,然后数字a的每一位去乘数字b的每一位,而且还都是从最低位开始. 那么代码也可以模仿这一过程. 比如:输入 “123” “20” 那么计算竖式应该是这样: 1 2 3 ...

2019-03-03 21:10:24

阅读数 64

评论数 0

二叉树学习(三)哈夫曼树

先来看一个例子: 如果需要传输 一串文本: abcdaabbbc(假设是ascii码) 一个英文字符是 1个字节,那么这里需要1018=80bit(80位来表示) 能否使用某种编码,来减少位的使用,节省空间呢? 比如 高频率出现的字符使用较少的位来表示 低频率出现的字符可以使用相对较多...

2019-02-28 12:51:40

阅读数 48

评论数 0

二叉树学习(一)普通二叉树的遍历与还原

二叉树是一种很重要的数据结构,一般的操作就是遍历和还原. 有着很多重要的应用,比如红黑树,二叉排序树(也叫二叉搜索树)查找性能很高, jdk8 hashmap是 基于红黑树实现的,如果对二叉树不了解,那么对二叉树的变形(搜索树,平衡树,堆排序)无从入手. 二叉树定义: ...

2019-02-07 18:37:10

阅读数 108

评论数 1

使用栈寻找迷宫通路

问题描述: 给定一个n*n的迷宫矩阵,障碍物记为1,无障碍记为0 int[][] map = new int[][]{ {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1,...

2019-01-28 11:24:10

阅读数 120

评论数 0

字符串匹配算法kmp

问题:给定原串origin,求target 串在原串第一次出现的位置,若不存在,输出-1 例如: origin:abcdef target:bc 输出:1 朴素算法 最直观的思路(朴素算法): 取target的首元素与origin的首元素比较,如果相同,执行2 两个字符相同,继续...

2019-01-26 21:33:49

阅读数 52

评论数 0

全排列的打印

题目:给定几个不重复数字,请输出全排列 示例:1,2,3 输出:1,2,3 1,3,2 2,1,3 2,3,1 3,2,1 3,1,2 思考:给定的字符是1,2,3,…n 全排列会允许任一字符能到达任一位置 比如:1,2,3 如果固定 1为第一个字符,则需要对 2,3 进行全排列 如果固定 2为第...

2019-01-25 21:47:53

阅读数 34

评论数 0

topK问题分析与实现

一,什么是topK问题? 一组数据中,需要找出前k大(小)的数据 二,思路分析:以前k小为例 思路1:先排序再输出 如果是完全有序,那么输出所求数据很简答了(需要排序,将数据完全排序) 思路2:基于快排,分片,不完全排序 使用快排思想,不断分片,左侧是比基准小的元素,右侧是比基准大的元...

2018-09-08 11:25:18

阅读数 404

评论数 0

一个计算器,只能乘2和减1

现有一个奇葩的计算器,只能执行乘2和减1操作,现在给定任意两个数字 m,n,其中m,n范围是   1<=m,n<=10^9 解决方式: 分情况讨论: 1,m=n   结果为0 2,m>n   结果为 m-n 3,m&am...

2018-09-03 21:47:46

阅读数 776

评论数 0

排序算法之冒泡,选择,插入,快排

例如:待排序序列     5,4,3,7,2,7,(目的是升序排列)  1.冒泡排序: 排n趟,每趟只是将原序列变得相对有序,随着趟数的增加,有序性也得到提升,最终完全有序  5,4,3,7,2,7 第一趟,5>4,交换---》   4,5,3,7,2,7     ...

2018-08-12 16:05:38

阅读数 156

评论数 0

找出重复两次的数--有且只有一个数字重复两次,其余都不重复

问题描述:数字范围是0-99的整数,给出101个整数,其中只有一个是重复两次的数,找出这个数 分析:如果是有序的话,遍历一次就可以找出 方法一 :先排序,再遍历,遍历超过一次 方法二 :只是排序,排序过程中对于元素相等这一特殊情况拿出来判断,直接返回相等的这个...

2018-06-20 22:17:22

阅读数 1905

评论数 0

python-最长公共子序列

#最长公共子序列 # 思想:动态规划 # 条件:给定两个字符串,或者是列表 s1='ABCDBAB' s2='BDCABA''# 最长公共子序列是最长的,但是不要求连续,与最长公共字串相区分def LCS(s1,s2,result): len1=len(s1) len2=len(s...

2018-06-15 17:40:53

阅读数 47

评论数 0

机器学习

http://36kr.com/p/5056699.html

2017-12-19 17:03:10

阅读数 109

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭