当前位置: 首页 > news >正文

顺的品牌网站设计价位朋友圈广告代理商官网

顺的品牌网站设计价位,朋友圈广告代理商官网,电子商务是什么,企业管理模式概念 队列是一种先进先出(FIFO)的数据结构,但有些情况下,操作的数据可能带有优先级,一般出队列时,可能需要优先级高的元素先出队列数据结构应该提供两个最基本的操作,一个是返回最高优先级对象,一个是添加…

概念

  • 队列是一种先进先出(FIFO)的数据结构,但有些情况下,操作的数据可能带有优先级,一般出队列时,可能需要优先级高的元素先出队列
  • 数据结构应该提供两个最基本的操作,一个是返回最高优先级对象,一个是添加新的对象。这种数据结构就是优先级队列(Priority Queue) 
  • Java集合框架中提供了PriorityQueue和PriorityBlockingQueue两种类型的优先级队列,PriorityQueue是线程不安全的,PriorityBlockingQueue是线程安全的

注意事项 

        PriorityQueue中放置的元素应该能够比较大小,不能插入无法比较大小的对象

        不能插入null,插入会抛出NullPointerException异常

        new NullPointerException()时默认初始容量为11

        插入和删除元素的时间复杂度为\log_{2}N

        PriorityQueue底层使用了堆数据结构

        PriorityQueue默认情况下是小堆---即每次获取到的元素都是最小的元素

常用方法

                        方法                描述
                boolean offer(E e)                入队列
                E poll()                        出队列
                E peek()                        得到队首元素
                int size()                返回集合中的元素个数

 如何使 PriorityQueue 的底层是一个大根堆 ?

下图为 PriorityQueue 的构造方法,第一个参数代表数组的大小,而第二个参数就一个比较器,传给他的就是比较的方法,通过给他传入大根堆的比较方式,通过传入比较器改变PriorityQueue 成为一个大根堆

 

案例

        

三种解法:

第一种顺序合并

        用一个变量 \ans 来维护以及合并的链表,第 i 次循环把第 i 个链表和ans 合并,答案保存到 ans 中

第二种分治合并

        将 kk 个链表配对并将同一对中的链表合并;
         第一轮合并以后, k 个链表被合并成了2/k个链表,平均长度为k/2n,然后是4/k个链表,8/k个链表等等;
        重复这一过程,直到我们得到了最终的有序链表。

 

 

 第三种使用优先队列合并

        

        我们需要维护当前每个链表没有被合并的元素的最前面一个,kk 个链表就最多有 kk 个满足这样条件的元素,每次在这些元素里面选取 \textit{val}val 属性最小的元素合并到答案中。在选取最小元素的时候,我们可以用优先队列来优化这个过程。

/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode() {}*     ListNode(int val) { this.val = val; }*     ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {public ListNode mergeKLists(ListNode[] lists) {PriorityQueue<ListNode> pq = new PriorityQueue<>(new Comparator<ListNode>() {@Overridepublic int compare(ListNode o1, ListNode o2) {return o1.val - o2.val;}}
);ListNode dummy = new ListNode(0), cur = dummy;for (ListNode list : lists) {if (list != null) {pq.offer(list);}}while (pq.size() > 0) {ListNode node = pq.poll();cur.next = node;cur = cur.next;if (node.next != null) {pq.offer(node.next);}}return dummy.next;}
}

        时间复杂度:考虑优先队列中的元素不超过 k 个,那么插入和删除的时间代价为 O(logk),这里最多有 kn 个点,对于每个点都被插入删除各一次,故总的时间代价即渐进时间复杂度为 O(kn×logk)。
        空间复杂度:这里用了优先队列,优先队列中的元素不超过 k 个,故渐进空间复杂度为O(k)。

http://www.dinnco.com/news/21201.html

相关文章:

  • 江西网站建设销售电话关键词搜索工具有哪些
  • 河南科兴建设有限公司网站抖音seo怎么收费
  • 佛山建设网站公司跨境电商
  • 网站开发总监待遇微信营销系统
  • 网站制作价格行情谷歌seo怎么做
  • javaweb网站开发小项目做seo前景怎么样
  • 模板网站做外贸可以吗免费网站收录入口
  • wordpress编辑页面改字体颜色网络优化工程师吃香吗
  • 营销型网站建设 课程站长统计推荐
  • dy刷粉网站推广马上刷营销策划咨询
  • 小卖部做网站seo关键词首页排名代发
  • 苏州网页服务开发与网站建设怎么拿到百度推广的代理
  • 安卓网站建站系统下载营销培训课程ppt
  • 建设银行预约纪念钞网站关键词自动优化
  • 湛江市住房和城乡建设局网站友情链接怎么添加
  • 常州网站推广软件信息推广普通话的文字内容
  • 专做和田玉的网站今日新闻十大头条内容
  • 做网站的生产方式国产免费crm系统有哪些
  • 滴滴优惠券网站怎么做写一篇推广商品的软文
  • 徐州手机网站制作公司哪家好百度推广优化公司
  • 网站设计的机构总排行榜总点击榜总收藏榜
  • 中国城乡住房和建设部网站首页色盲测试图免费测试
  • 网站推广如何做观看b站的广告网站平台
  • 用bootstrap做的网站有哪些有效的网络推广
  • 王野天天西安seo高手
  • 网站建设维保合同范本河南省干部任免最新公示
  • 沧州做网站的公司排名网站设计模板网站
  • c#可以做网站吗葫岛百度seo
  • 手机网站开发基础百度手机
  • 南通市区有哪几家做网站的详细描述如何进行搜索引擎的优化