题目: 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 分析: 栈的特点是先进后出,队列的特点则是先进先出。 题目要求我们用两个栈来实现一个队列,栈和队列都有入栈(入队)的操作,所以我们可以使用一个栈来模拟入队的操作,另一个栈用来负责出队。 利用stack1模拟 ...
分类:
编程语言 时间:
2019-11-09 19:44:32
阅读次数:
96
题意:x轴上有n个人,让你放置m个集合点,使得每个人往离他最近的集合点走,所有人走的距离和最短。 把距离视为花费,设$dp[i][k]$表示前i个人分成k段的最小花费,则有递推式$dp[i][k]=min\{dp[j][k-1]+w(j,i)\}$,其中$w(j,i)$可以$O(1)$求出。 显然, ...
分类:
其他好文 时间:
2019-11-09 11:35:47
阅读次数:
120
Redis的 list 数据结构常用来作为 异步消息队列 使用,使用 rpush/lpush 操作 入队 ,使用 lpop/rpop 来操作 出队
分类:
其他好文 时间:
2019-11-06 18:25:44
阅读次数:
186
图论: 一.最短路: 1.spfa算法中的vis数组记录的是有没有入队,防止多次入队,通过松弛操作来达到最优解 2.dijkstra算法的vis是记录是否出队,也就是说根据贪心的过程,我们在优先队列里可能会多次放一个点 但是我们只需要用距离最小的点来更新,其他入队的相同点不能更新来保证时间复杂度 3 ...
分类:
其他好文 时间:
2019-11-05 16:53:49
阅读次数:
70
栈:先进后出 队列:先进先出 都是数组存放,但是删除的时候不是删除了数组中的数据,而是使用增加游标标识的方式实现删除,“游标标识”加加或者减减完成删除操作,查看的时候,也不是直接查看栈和队列的数组元素,而是使用游标的方式向外查看。 栈的实现 ...
分类:
编程语言 时间:
2019-11-01 11:10:40
阅读次数:
82
现在有一个A队列和一个B队列。 (1)入栈操作,判断A队列是否有元素,若A队列有元素,则元素直接入A队列;若没有,则将元素入B队列; (2)出栈操作,若A和B都没有元素,则出栈失败; 判断A是否有元素,若A有元素,则获取A元素的个数N,将前N-1个元素出队并进入B队列,最后一个元素即为出栈元素; 如 ...
分类:
其他好文 时间:
2019-10-31 23:40:10
阅读次数:
121
1.为什么不使用Executors提供4个线程池创建线程池 阿里巴巴开放手册这样写: 2.创建过程 虽然不建议使用Executors创建线程池,但是还是要搞清楚他的原理。 注意: 1.核心线程池=最大线程池(不聘请临时工) 2.LinkedBlockingQueue按照先进先出队列,最大队列为Int ...
分类:
编程语言 时间:
2019-10-28 12:54:17
阅读次数:
102
原创建时间:2017 12 30 21:05:19 简单的SPFA最短路模板,适用于图的边权有负数的情况。 算法实现: 我们用数组d记录每个结点的最短路径估计值,而且用邻接表来存储图G。运用动态逼近法:设立一个先进先出的队列用来保存待优化的结点,优化时每次取出队首结点u,并且用u点当前的最短路径估计 ...
分类:
其他好文 时间:
2019-10-26 20:41:22
阅读次数:
111
ConcurrentLinkedQueue 主要讲一下在JDK8中,ConcurrentLikedQueue是如何入队,出队的。 首先我们要明白,ConcurrentLikedQueue是一种安全的没有边界的基于链表的队列,有头节点head,尾结点tail。 类似于 ,上图是创建一个空的队列,只有h ...
分类:
其他好文 时间:
2019-10-24 23:52:30
阅读次数:
177
BFS : 1.普通队列:维护 (1)两段性(队列中至多有x和x+1两种距离) (2)单调性 首次入队即为最短距离(所以通常要判重) 2.优先队列: 可能入队出队多次,通常首次 出 队即为最短距离(无需判重) 一.模型 1.flood fill(洪水填充,即连通块模型) 2.最短路(通常在网格图上, ...
分类:
编程语言 时间:
2019-10-21 23:26:46
阅读次数:
177