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