
Algorithm
文章平均质量分 77
算法思路及分类
未闻名
待到山花烂漫时,她在丛中笑。
展开
-
优先队列简介
简介优先队列和普通队列最大的区别是出队顺序,普通队列按照严格先进先出的出队顺序,优先队列则对每个队内元素添加了优先级,优先级高的先出队。优先队列底层实现使用的是大顶堆/小顶堆。应用场景数据压缩:赫夫曼编码算法;最短路径算法:Dijkstra 算法;最小生成树算法:Prim 算法;任务调度器:根据优先级执行系统任务;事件驱动仿真:顾客排队算法;选择问题:查找第 k 个最小元素;合并问题:合并k个升序的集合;会员机制:比如抢购活动中vip用户能够优先抢到会员(貌似不太公平);投诉惩罚机制原创 2022-04-30 21:56:09 · 403 阅读 · 0 评论 -
单调栈简介
何为单调栈栈内元素非递增或者非递减。另一种说法是从栈底到栈顶非递增或者非递减。在很多情况下,可能会出现相同的数字元素,所以称之为非递增或者非递减栈更合适。显而易见,从单调栈的这种结构很容易联想到,在算法中,合理运用单调栈,能够将O(n^2)的时间复杂度优化到O(n),这就是技巧。相对的,空间复杂度会增加,因为需要动态维护一个栈。这里需要明白一点,算法里面,都是时间和空间的取舍,所谓的时空间转换指的就是这个,所以要根据具体场景去选择。适用范围求一个数组每一个的下一个最大值、对一个数组排序、判断当前元素原创 2022-03-07 21:05:46 · 5872 阅读 · 2 评论