算法数据结构
草帽boy7
/ynmianyan/10927062
展开
-
KMP 算法 笔记
KMP 包含一个PMT表。我们把 待匹配的文字称为 模式字符串.前缀 : “aba” 前缀为 除去 最后一个 字符 “a” 所 形成 的集合。 {“a”,“ab”}后缀 : “aba” 后缀 为 除去 最前的一个字符串 “a” 所形成的集合 {“a”,“ba”}它们 之间的 交集为 {“a”} ,长度为 1,那么 在 PMT表 中 a 对应 1.模式字符串 issip 在 某一个 地方 出现 不匹配,那么 至少 在 前 j -1 个字符是匹配的.如果 是普通的 做法,如果我们 碰到 不匹配原创 2020-07-01 16:32:13 · 231 阅读 · 0 评论 -
leetcode 面试题52. 两个链表的第一个公共节点
这道题目,虽然实现起来并不困难,但是思路很巧妙。解这道题 我们需要对 2个 链表把他们 作相交 看看 有没有公共部分,但是 最大的问题是, 只要 我们把 链表长度 对最后一位对齐 把 每一位 比较下 节点地址 一样就返回,上面一种巧妙地方式 就是 让 a + b = b + a把 a 循环到 结尾 后 绕到B去B循环到结尾后 绕到A 去这样 下一次比较的时候 他们长度就对齐了。...原创 2020-04-10 13:15:03 · 182 阅读 · 0 评论 -
Trie树魔改 实现千万数据 秒级排序
Trie 树的优点 是 查找 摘要O(len)的 复杂度 ,本质上也是一颗树的结构。花了 一天时间,在自己上一篇文章的原基础上实现了一个Trie 能排序的算法,发现性能还不错,读取一个 大概一个1个亿的数据,耗时 23秒左右完成排序。内存占用情况:因为 是从 500多KB复制黏贴出来的所以,重复的比较多...原创 2020-03-21 20:06:07 · 270 阅读 · 0 评论 -
数据结构之树从入门到如土(一)----大话二叉树 及GO实现
什么是树 相信大家没见过虽然可能没见过就散机里的树,但是一定见过现实世界的????吧. 如果问你几个树的主要特征,你能答上来几个?我猜吃货首先会想到的能吃不能吃,这样的属性,其实树有很多特点 (好吧我也答不上来了),但其中比较明显的一点是,????从根开始会不断分叉,1根树枝可能会有1个分叉但更多的是2个分叉或者以上. 抽象出来 当一个节点产生多个子节点(n &...原创 2020-03-03 20:44:39 · 190 阅读 · 0 评论 -
布隆过滤器 原理 应用场景推导及Go实现
优点:不需要存储key,节省空间缺点:算法判断key在集合中时,有一定的概率key其实不在集合中无法删除典型的应用场景:某些存储系统的设计中,会存在空查询缺陷:当查询一个不存在的key时,需要访问慢设备,导致效率低下。比如一个前端页面的缓存系统,可能这样设计:先查询某个页面在本地是否存在,如果存在就直接返回,如果不存在,就从后端获取。但是当频繁从缓存系统查询一个页面时,缓存系统将会...原创 2020-02-25 16:03:08 · 679 阅读 · 0 评论 -
排序算法之 BitMap算法 原理及Go实现
1.BitMapBitMap是一种排序算法,他的特点是速度快,节省容量。可以对整数型型数据进行排序,同时也可以应用于文本去重,排序前先要对文本进行MD5操作。优点节省空间,对于一个字节进行排序,只要一个字节的空间。运行效率高缺点:重复数据只能记录一次。假设要对30 亿个 数据 进行排序,每个整数如果占 4 个字节 那么 30亿的数据就要占用 11 个G,对于一些配置...原创 2020-02-24 23:11:53 · 425 阅读 · 1 评论 -
Gabbage collect(GC) 垃圾回收算法Go实现
GC最早 出现 是在 lisp 语言设计开始1年后,的1959年夏天,实现GC的是一个叫D.Edwards的人。自从Gc被提出来的 70多年里这方面有了大量的研究,不过GC之所以能被很多现代高级语言作为 标配,还是以Java的兴起带了个头。有了GC程序员就不需要自己去管理麻烦的内存分配回收也避免了一些可能的回收内存所带来的的安全性问题。GC需要做的有两件事找到内存空间里的垃圾回收垃圾,让程...原创 2020-02-19 15:15:19 · 384 阅读 · 0 评论 -
常用排序算法 Go实现
冒泡排序:分解思想:1.每次取到最大的数和第i位交换//取数组最大的数 遍历一遍数组 找到最大的func GetMax(arr[] int){ for j:=1;j<len(arr);j++{ //找到数组中最小的值 交换到数组的第一位 if arr[j-1] < arr[j]{ arr[j-1],arr[j] = arr[j],arr[j-1] } }...原创 2020-02-17 23:07:03 · 124 阅读 · 0 评论 -
Gin Web框架 核心源码分析
看到在Gin Web框架中 路由tree 中 的priority字段 并不是很了解作用 就单独拿出来了解了下 实际上就是对数组里面子节点 进行排序 使它索引变小 这样在 下移插入路由时 能更快找到。type node struct { children []node path string priority uint32 indices string}以上是 简化的数据结构...原创 2020-01-09 15:39:53 · 514 阅读 · 0 评论 -
GO 实现 广度优先 迷宫算法
假设有一个迷宫 由 1 0 组成 1代表墙 0代表可以走通用文本记录6 60 1 0 0 0 00 0 0 1 0 00 1 0 1 0 11 1 1 0 0 10 1 0 0 1 00 1 0 0 0 1前一行记录了 行数6 和 列数 6用GO语言读取 上述格式的文件//打开文件file,err := os.Open(finlename)//Go语言万能错误处理语句...原创 2019-12-15 16:57:35 · 617 阅读 · 0 评论 -
(算法)对数组进行旋转操作
在写lua 虚拟机时 碰到旋转 操作 研究了下package maintype lists struct { top int slots []interface{}}func main(){ ls := lists{14,nil} for i := 0;i<ls.top;i++ { ls.slots = append(ls.slots, i); } ls.Rota...原创 2019-12-11 17:07:32 · 279 阅读 · 0 评论