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

建设网站工作室东莞做棋牌网站建设

建设网站工作室,东莞做棋牌网站建设,网站建设公司 合肥,中国义乌网分治算法题目 分治算法是什么题目:合并K个升序链表总结 分治算法是什么 把问题分解后进行求解,相比于不分解直接求解,时间复杂度更低。符合这个特征的算法,我们才称之为「分治算法」。 题目:合并K个升序链表 题目 分…

分治算法+题目

  • 分治算法是什么
  • 题目:合并K个升序链表
  • 总结

分治算法是什么

问题分解后进行求解,相比于不分解直接求解,时间复杂度更低。符合这个特征的算法,我们才称之为「分治算法」。

题目:合并K个升序链表

题目
在这里插入图片描述
分治算法:

/*** 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 {//分治的思想 二分分治 时间复杂度是O(N*logN)public ListNode mergeKLists(ListNode[] lists) {int sz=lists.length;return merge(lists,0,sz-1);}//定义:合并lists[startIndex...endIndex]上的链表ListNode merge(ListNode[] lists,int startIndex,int endIndex){//没有链表if(startIndex>endIndex){return null;}//一条链表if(endIndex==startIndex){return lists[startIndex];}//分成两段 [startIndex,mid][mid+1,endIndex]int mid=(startIndex+endIndex)/2;//合并左边的ListNode left= merge(lists,startIndex,mid);//合并右边的ListNode right= merge(lists,mid+1,endIndex);//合并左右边的return mergeTwoLists(left,right);}ListNode mergeTwoLists(ListNode list1,ListNode list2){ListNode dummy=new ListNode(-1);ListNode cur=dummy;ListNode p1=list1;ListNode p2=list2;while(p1!=null && p2!=null){if(p1.val<p2.val){cur.next=p1;p1=p1.next;}else{cur.next=p2;p2=p2.next;}cur=cur.next;}while(p1!=null ){cur.next=p1;p1=p1.next;cur=cur.next;}while(p2!=null ){cur.next=p2;p2=p2.next;cur=cur.next;}cur.next=null;return dummy.next;}
}

优先级队列:

/*** 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) {// TODO Auto-generated method stubreturn o1.val-o2.val;}});//取出所有链表 将每个节点入队列for(ListNode list:lists) {ListNode cur=list;while(cur!=null) {pq.add(cur);cur=cur.next;}}//取出所有节点ListNode dummy=new ListNode(-1),cur=dummy;while(!pq.isEmpty()) {cur.next=pq.poll();cur=cur.next;}cur.next=null;return dummy.next;}
}

总结

在这里插入图片描述

把递归算法抽象成递归树,如果递归树节点的时间复杂度和树的深度相关,那么使用分治思想对问题进行二分,就可以使递归树尽可能平衡,进而优化总的时间复杂度

http://www.dtcms.com/wzjs/834928.html

相关文章:

  • 广州网站设计公司兴田德润活动东乡网站建设
  • 怎么建设两个大淘客网站网站建设分金手指专业十二
  • 东莞南城网站建设村建站全称
  • 大理做网站哪家好网站开发提成
  • 广西建工集团官网杨和关键词优化
  • 网站建设 类资阳网站开发
  • 人才网站建设的目标百度装修网站
  • 南昌做网站ui登录界面设计
  • 建设工程合同的概念海南seo外包
  • 小皮搭建本地网站哪里做公司网站
  • 做外汇需要关注哪几个网站自己做众筹网站
  • 网站团购活动页面怎么做龙口网站制作价格
  • 我做的网站怎么提升排名校园招生网站建设的简报
  • 做韩国网站有哪些wordpress描述怎么写
  • 扬州建设机械网站网站建设宣传资料
  • 首钢水钢赛德建设有限公司网站论坛网站建设费用
  • 免费如何创建网站平台wordpress建小说网站
  • 嘉兴优化网站公司东莞集团网站建设
  • 宜宾建功路桥建设有限公司网站响应式网站做多大的尺寸
  • 宿州建设网站公司哪家好在线设计平台 类似pixao
  • 网站站外推广的内外链接怎么做宣传页面怎么制作
  • 用 可以做网站软件吗搭建网站多少钱
  • 郑州高端网站建设是什么意思新公司网站建设费用怎么入账
  • 锦州网站建设怎样保定网站推广公司
  • 网站图片的作用seo竞价网站建设
  • 网站建设规划书实训报告用dw做的网站怎样弄上网上
  • 龙采科技做网站多少钱扁平化设计 网站
  • 推广公司的网站可以采取哪些方式毕设做微课资源网站设计可以吗
  • shopify可以做企业网站嘛企业网站内容建设 知乎
  • 腾讯域名怎么建设网站花钱做网站不给源码