摘要: package newcoder; import java.util.HashMap; import java.util.List; import java.util.Stack; public class UnionFind { public static class Element<V> { public V value; public Element (V value) { this.val 阅读全文
posted @ 2019-09-25 14:54 莹狼 阅读(102) 评论(0) 推荐(0) 编辑
摘要: 规范:节点size不小于兄弟节点的任意一个子节点size(不能比侄子小) 阅读全文
posted @ 2019-09-25 14:54 莹狼 阅读(208) 评论(0) 推荐(0) 编辑
摘要: import java.util.ArrayList; import java.util.Comparator; import java.util.List; /** 定义: 1. 节点中元素升序排序 2. 每个叶节点有相同的高度 3. 节点有 n 个元素,至多有 n+1 个子节点 4. 每个节点最少 t-1 个元素,最多 2t-1个元素( t 由程序员指定) 5. 根节点至少2个子节点 搜索:按 阅读全文
posted @ 2019-09-25 14:53 莹狼 阅读(101) 评论(0) 推荐(0) 编辑
摘要: 一、原理 ThreadLocal的原理就是将参数放在当前线程中,达到线程隔离的目的。 二、代码分析 1、 ThreadLocalMap 1.1 基础属性 1.2 nextIndex、prevIndex 这里将Entry数组作为环形,数组最后一个值的下一个值为数组的第一个值。 1.3 set方法 将< 阅读全文
posted @ 2019-09-04 18:32 莹狼 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 一、原理 BitSet 类由 long 数组组成,我们知道,long类型数字是64位,如果将 N 个long数字的bit连起来,则可以表示 64*N个数字的存在性(存在标志为1,不存在标志为0)。 二、源码分析 1、构造参数 2、set方法 先计算出该index应该放在数组的哪一位,然后再该long 阅读全文
posted @ 2019-09-02 23:50 莹狼 阅读(403) 评论(0) 推荐(0) 编辑
摘要: 1、基础属性 2、Segment结构 3、HashEntry结构 4、构造函数 5、put方法 6、size计算:在不加锁的情况下先后计算两次,如果两次计算的modCount一致,则认为在统计的时间内,没有其它线程对该map修改或删除,直接返回size;如果两次计算的modCount不一致,则对所有 阅读全文
posted @ 2019-09-02 16:39 莹狼 阅读(505) 评论(0) 推荐(0) 编辑
摘要: 前言 PMT:PMT中的值是字符串的前缀集合与后缀集合的交集中最长元素的长度 Next数组:PMT向后移一位,最前位补-1。每个位置记录的则是前面的字符串的前缀集合与后缀集合的交集中最长元素的长度 代码 阅读全文
posted @ 2019-08-27 11:18 莹狼 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 一、核心思想 1、深度优先搜索 用栈做辅助,做回溯判断(搜索到哪一点就push,回溯就pop),直至初始点也回溯完。 2.广度优先搜索 利用队列的先进先出特点,每一轮都将当前节点的儿子们放进队列,一轮遍历结束时,当前层的儿子们已经放入队列,重复下去。 二、代码 阅读全文
posted @ 2019-08-27 10:52 莹狼 阅读(219) 评论(0) 推荐(0) 编辑
摘要: 一、线程的一些概念 进程:每个进程都有独立的代码和空间,例如QQ和WeChat 线程:程序执行运算的最小单位,在同一进程中共享资源 并发:在同一时刻,一个cpu只能执行一个线程,但是速度快,它可以快速的在线程间切换 并行:多个cpu同时执行一段代码,达到真正意义上的并行 二、线程池简介 定义:管理一 阅读全文
posted @ 2019-08-26 09:31 莹狼 阅读(182) 评论(0) 推荐(0) 编辑
摘要: 平衡二叉树规则:每个节点左右孩子高度差不大于1 阅读全文
posted @ 2019-08-26 07:30 莹狼 阅读(211) 评论(0) 推荐(0) 编辑