
算法
小丫小菇凉
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
一致性哈希算法
参考左程云算法视频及《程序员代码面试指南》。 考虑一个缓存场景:通过使用服务器集群设计和实现数据缓存。 取模法 通过数据的ID计算hash值(key),假设有N台机器,计算key%N,即为缓存的机器编号。 主要问题 如果机器数量不是固定的,每次机器有增删时,都需要对所有数据重新计算hash,同时会造成大批量的数据迁移。 Hash环 假设哈希值范围为232, 可以将这232个假想成一个环: 通过每...原创 2019-04-27 13:39:57 · 166 阅读 · 0 评论 -
二叉树相关算法实现
二叉树打印所有节点 前序,中序,后序 public class Node { public int value; public Node left; public Node right; public Node(int value) { this.value = value; } } //前序递归 public void preOrder(Node head) { if(head ...原创 2019-09-21 23:33:52 · 1413 阅读 · 1 评论 -
KMP算法
查看某个字符串是否是另一个字符串的字串。 1. 计算字符串中每个元素之前的字符串中,前缀字串和后缀子串的最大匹配长度。 定义一个与字符串match长度一致的next[]数组,next[i]代表从match[0,…i-1]中,以match[0]为开始的前缀字串与以match[i-1]为结尾的后缀子串的最大匹配长度。 从左到右依次求解 next[0]默认为-1; next[1] = 0; 假设要求A位...原创 2019-05-01 19:00:17 · 153 阅读 · 0 评论 -
链表算法题目--链表相交
参考《程序员代码面试指南》。 链表相交问题 判断两个单链表是否相交: 链表可能是有环也可能是无环的。 对于每一个链表,判断链表是否有环,如果有环,返回第一个进环节点。 两个无环链表是否相交。 两个有环链表是否相交。 一个有环一个无环一定不相交。 判断链表是否有环 方法1:创建HashSet存储已遍历过的节点,每遍历到一个新节点,就与HashSet中的节点比较。 方法2:快慢指针法 定义两个指针...原创 2019-05-06 23:17:23 · 342 阅读 · 0 评论 -
二叉树的序列化与反序列化
序列化: 用两个特殊字符, #代表此处为null,用#占位 !代表该节点已被序列化结束,表终止 先序遍历方式: 图一: 12!3!#!#!#! 图二: 1!23!#!#!#! 反序列化: 按照终止符!进行字符切割,装进队列里,将队列中的元素依次弹出构建左右子树。 public class serialTree { public static class Node { public int...原创 2019-05-11 16:25:40 · 128 阅读 · 0 评论 -
Manacher算法
字符串中找最长回文子串。 如何处理奇偶字符串的问题? 113311 ,11311,计算中心是字符还是字符间空格? 可以对字符进行填充。 #1#1#3#1#1# 将每一个空隙都用同一个字符填充上(什么字符都可以,原字符串中包含的字符也可以),求出以每个字符为中心扩展出的最长回文的长度,找到其中的最大值除以二,即为最后结果。 几个概念: 回文半径:以某一个字符为中心扩出来的回文字符串范围。 回文右边...原创 2019-05-11 18:59:42 · 131 阅读 · 0 评论