摘要: 一、场景 并查集多数是用来解决连通性问题的 如至少修建几条路可以使所有路口可以相通 把互通的路口当做一个群组,那问题就是有几个这样的群组 如有N个群组 那至少修N-1条路 就可以把所有路口相连。 二、使用 并查集分两步 1、合并 合并就是把相连的多个节点划到一个群组中 可以定义数组parent[] 阅读全文
posted @ 2020-03-16 22:39 蓝天随笔 阅读(162) 评论(0) 推荐(0) 编辑
摘要: 一、分类 深度搜索:不断的搜索或计算子问题,直到某个分支结束,再回溯到上一个子问题,用途广泛 递归的实现就是一种深度搜索。 用的是栈的结构 广度搜索: 每次搜索下一个阶段的所有选项,都结束后 再来下一个阶段 用于求最短路径之类的问题。 用的是队列的结构 二、二叉树前序 后序 中序遍历 这3种都属于深 阅读全文
posted @ 2020-03-11 22:13 蓝天随笔 阅读(408) 评论(0) 推荐(0) 编辑
摘要: 一、思想 贪心算法考虑的是眼前的利益,是局部最优解 ,并不能保证最终最优解 如果能从局部最优解 推断出 问题的解,才适用,适用场景较少 如经典的换钱币问题,有 1元 3元 4元的钱币 问给定N元 可以换最少的个钱币个数 局部最优的话 ,那每次当然换4元的钱币 这样才是最优的。但最终不是最优的 如6元 阅读全文
posted @ 2020-03-11 21:25 蓝天随笔 阅读(114) 评论(0) 推荐(0) 编辑
摘要: 一、思想 取某一维度的中间值 分成两半,每次只需要跟其他一半查找或计算 如:对于一个有序的数组 查找某个值 ,那二分可以直接对数组下标进行二分 输入: nums = [-1,0,3,5,9,12], target = 9 输出: 4 解释: 9 出现在 nums 中并且下标为 4 二、解题模式 常用 阅读全文
posted @ 2020-03-11 21:15 蓝天随笔 阅读(166) 评论(0) 推荐(0) 编辑
摘要: 一、一般使用场景 常用于多阶段决策问题 最优解问题 区别于贪心算法只考虑眼前的局部利益 动态规定求解的是整体的最优值 如:求A到B的最短路径 A出发可达 A1 A2 A3 A1 出发可达 B1 B2 A2 出发可达 B2 B3 .... 二、特点 最优子结构 : 最优解的问题可以由子问题的最优解转换 阅读全文
posted @ 2020-03-11 20:50 蓝天随笔 阅读(106) 评论(0) 推荐(0) 编辑
摘要: 1、支持并发 使用CAS保证更新的原子性 线程安全 2、状态不一致 head tail并非总是指向真正的头尾节点 只有head/tail与头尾节点的距离超过HOPS阈值 才会更新head tail 3个不等式保证数据处理正确: 基本不变式 在执行方法之前和之后,队列必须要保持的不变式: 当入队插入新 阅读全文
posted @ 2019-09-24 23:38 蓝天随笔 阅读(518) 评论(0) 推荐(0) 编辑
摘要: 1、阻塞和非阻塞 ConcurrentLinkedQueue是非阻塞的线程安全队列 2、ConcurrentLinkedQueue是无界的 LinkedBlockingQueue可以指定大小 3、加锁方式 ConcurrentLinkedQueue使用CAS 原子指令来保证线程安全。吞吐量更高 Li 阅读全文
posted @ 2019-09-22 16:34 蓝天随笔 阅读(977) 评论(0) 推荐(0) 编辑
摘要: 1、并非按FIFO进出 传统的queue 是按先进先出的顺序执行。而PriorityQueue是按优先级来绝对的 优先级低的先出queue 2、如何排序 PriorityQueue既然有优先级排序 那么如何排序的。 a. 放入队列的元素实现了Comparable接口 按其自然顺序排序 从小到大。 b 阅读全文
posted @ 2019-09-22 16:25 蓝天随笔 阅读(1448) 评论(0) 推荐(0) 编辑
摘要: 1、ArrayBlockingQueue采用动态数组 takeIndex和putIndex 表示存和取的两个数组下标。 有界 (必须指明数组大小) 不能存放null 读和写公用一个ReentrantLock 2、LinkedBlockingQueue采用链表实现 默认无界(可以在初始化时指明大小) 阅读全文
posted @ 2019-09-22 15:54 蓝天随笔 阅读(1560) 评论(0) 推荐(1) 编辑
摘要: 1、背景 java诞生之初 就有线程安全的Vector,但Vector对读写都是通过synchronized关键字来同步的,性能并不好 且Vector每次扩容是原来的1倍,存在内存浪费的可能。 对于线程安全的List JDK提供了CopyOnWriteArrayList 2、原理 2.1 CopyO 阅读全文
posted @ 2019-09-16 23:23 蓝天随笔 阅读(1014) 评论(0) 推荐(0) 编辑