算法
文章平均质量分 68
大卫不加班
不会做饭的厨师不是好程序员!
展开
-
机器学习
http://36kr.com/p/5056699.html转载 2017-12-19 17:03:10 · 174 阅读 · 0 评论 -
布隆过滤器
什么是布隆过滤器??用于:百分百正确判断 存在某元素不在集合中有概率误判 元素在集合中描述:是将元素映射到二进制位上,对于待检测的元素,可以检测映射到的二进制位是否都为1,如果不都为1,这表明这个元素一定不存在次集合中如果全为1,这表明可能存在此集合中。下图中:x,y,z都是可能在集合中的w是肯定不在集合中与缓存对比布隆过滤器(可以过滤掉所有不可能有结果的请求):比如现在需...原创 2019-03-26 22:17:23 · 218 阅读 · 0 评论 -
o(n)时间复杂度查找所有元素后面第一个比他大的数
1,输入n个无序整数输出 每个数之后第一个比他大的数,要求时间o(n)示例:1,-1,2,3输出:2 2 3解决思路:栈+栈底指针入栈:栈为空,入栈 1-1< 栈底=1 入栈 1 -12 >栈底=1 ,全部出栈,输出 2 2...原创 2019-03-07 15:09:36 · 1942 阅读 · 0 评论 -
堆排序算法实现
堆排序:结构逻辑上是完全二叉树,但是可以使用顺序存储来实现一些二叉树的区别:二叉树:度数最大为2并且每个子树也是二叉树满二叉树:每层节点都是满的,没有空缺,也就是,叶子节点只能出现在最后一层完全二叉树:限制条件比满二叉树弱化,只需要前k-1层是复合满二叉树结构,最后一层的叶子节点都靠左排列,右侧可以出出现连续缺失(一个学序列可以按照编号一一对应上满二叉树的节点编号)排序二叉树: 二...原创 2019-03-10 14:35:06 · 5252 阅读 · 0 评论 -
大数乘法
给定两个长度不限的数字字符串,求乘积.思路:如果是让你手算,你一定会列竖式,然后数字a的每一位去乘数字b的每一位,而且还都是从最低位开始.那么代码也可以模仿这一过程.比如:输入 “123” “20”那么计算竖式应该是这样: 1 2 3 2 0 1*0 2*0 3*0 2*1 ...原创 2019-03-03 21:10:24 · 320 阅读 · 0 评论 -
二叉树学习(三)哈夫曼树
先来看一个例子:如果需要传输 一串文本:abcdaabbbc(假设是ascii码)一个英文字符是 1个字节,那么这里需要1018=80bit(80位来表示)能否使用某种编码,来减少位的使用,节省空间呢?比如 高频率出现的字符使用较少的位来表示低频率出现的字符可以使用相对较多的字符来表示哈夫曼编码就是这个思想.统计其中字符出现的次数字符次数频率a33/...原创 2019-02-28 12:51:40 · 323 阅读 · 0 评论 -
二叉树学习(一)普通二叉树的遍历与还原
二叉树是一种很重要的数据结构,一般的操作就是遍历和还原.有着很多重要的应用,比如红黑树,二叉排序树(也叫二叉搜索树)查找性能很高, jdk8 hashmap是 基于红黑树实现的,如果对二叉树不了解,那么对二叉树的变形(搜索树,平衡树,堆排序)无从入手.二叉树定义:...原创 2019-02-07 18:37:10 · 547 阅读 · 1 评论 -
使用栈寻找迷宫通路
问题描述:给定一个n*n的迷宫矩阵,障碍物记为1,无障碍记为0int[][] 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, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1},{1, 1, 1, 0, 0, 1, 1, 1, ...原创 2019-01-28 11:24:10 · 672 阅读 · 0 评论 -
字符串匹配算法kmp
问题:给定原串origin,求target 串在原串第一次出现的位置,若不存在,输出-1例如: origin:abcdeftarget:bc输出:1朴素算法最直观的思路(朴素算法):取target的首元素与origin的首元素比较,如果相同,执行2两个字符相同,继续比较两个串的下一个元素如果出现元素不同3.1 如果上一个元素是匹配的(也就是当前比较的不是target串的首字符)...原创 2019-01-26 21:33:49 · 243 阅读 · 0 评论 -
全排列的打印
题目:给定几个不重复数字,请输出全排列示例:1,2,3输出:1,2,31,3,22,1,32,3,13,2,13,1,2思考:给定的字符是1,2,3,…n全排列会允许任一字符能到达任一位置比如:1,2,3如果固定 1为第一个字符,则需要对 2,3 进行全排列如果固定 2为第一个字符,则需要对 1,3 进行全排列(为什么不是3,1被?这里是将1与2位置交换,方便思考,以免混乱...原创 2019-01-25 21:47:53 · 1544 阅读 · 0 评论 -
一个计算器,只能乘2和减1
现有一个奇葩的计算器,只能执行乘2和减1操作,现在给定任意两个数字m,n,其中m,n范围是 1<=m,n<=10^9解决方式:分情况讨论:1,m=n 结果为02,m>n 结果为 m-n3,m<n 3.1 m<2*n-1 m-=1 3.2 m>=2*n-1 m*=2c++代码实现:1,循环实现int...原创 2018-09-03 21:47:46 · 2559 阅读 · 0 评论 -
topK问题分析与实现
一,什么是topK问题?一组数据中,需要找出前k大(小)的数据二,思路分析:以前k小为例思路1:先排序再输出如果是完全有序,那么输出所求数据很简答了(需要排序,将数据完全排序)思路2:基于快排,分片,不完全排序使用快排思想,不断分片,左侧是比基准小的元素,右侧是比基准大的元素, 令 index=基准元素下标a, index<k 说明第k小元素...原创 2018-09-08 11:25:18 · 2413 阅读 · 0 评论 -
排序算法之冒泡,选择,插入,快排
例如:待排序序列 5,4,3,7,2,7,(目的是升序排列) 1.冒泡排序:排n趟,每趟只是将原序列变得相对有序,随着趟数的增加,有序性也得到提升,最终完全有序 5,4,3,7,2,7第一趟,5>4,交换---》 4,5,3,7,2,7 5>3 ,交换---》 4,3,5,7,2,7 5<...原创 2018-08-12 16:05:38 · 713 阅读 · 0 评论 -
python-最长公共子序列
#最长公共子序列# 思想:动态规划# 条件:给定两个字符串,或者是列表 s1='ABCDBAB's2='BDCABA''# 最长公共子序列是最长的,但是不要求连续,与最长公共字串相区分def LCS(s1,s2,result): len1=len(s1) len2=len(s2) # 生成一个二维数组来存放当前最长公共子序列长度 for i in range ...原创 2018-06-15 17:40:53 · 692 阅读 · 0 评论 -
找出重复两次的数--有且只有一个数字重复两次,其余都不重复
问题描述:数字范围是0-99的整数,给出101个整数,其中只有一个是重复两次的数,找出这个数分析:如果是有序的话,遍历一次就可以找出方法一:先排序,再遍历,遍历超过一次方法二:只是排序,排序过程中对于元素相等这一特殊情况拿出来判断,直接返回相等的这个元素,方法三:使用亦或运算符 ^ ,这个也是刚了解到的,遍历一次 相同数字 亦或一次 结果是 0 不同数异...原创 2018-06-20 22:17:22 · 5881 阅读 · 0 评论 -
LRU cache简易实现
1. 什么是LRU cache?就是一种缓存,算法思想是:将最近访问的数据挪动到头部,如果下次还是访问这个数据,那么就能在靠前的位置访问到这点其实是运用了时间局部性原理:最近一次访问的位置,下一次也很可能访问2. 实现思路:使用双向链表使用哨兵节点,pre 指向尾节点,next 指向头结点插入操作:push(1,先查找,如果有,挪动到头部2,如果没有,检查cache 是否到达大容量,...原创 2019-03-29 10:09:13 · 511 阅读 · 0 评论