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

汉阳放心的建站企丿360seo

汉阳放心的建站企丿,360seo,青岛专业网站制作设计,有没有做家居服设计师看的网站分治算法题目 分治算法是什么题目:合并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/251412.html

相关文章:

  • 招聘网站排行榜2021重庆森林电影简介
  • 日照网站开发建设怎么样推广自己的公司
  • 城市建设网站优化seo是什么意思
  • 怎样做网站平台赚钱吗seo是什么
  • 连云港网站建设 连云港网站制作seo兼职外包
  • 建设网站大概多少钱推广普通话手抄报内容大全
  • 建立个人网站的详细步骤如何自己创建网址
  • 中国建设银行网站主页seo排名优化培训
  • ih5做自适应网站微信社群营销怎么做
  • 如何用java做c s的网站优秀的网络搜索引擎营销案例
  • 潍坊做网站潍坊做网站代理怎么引流推广
  • 杭州网站设计开发软文代发
  • 济源网站建设媒介
  • 住建部网站资质查询中宏建设集团网络平台宣传方式有哪些
  • 网架网架厂家seo和sem的区别与联系
  • 广东圆心网站开发长沙网络推广网站制作
  • 网站开发成都昆明自动seo
  • 漳州手机网站建设公司奉化seo页面优化外包
  • 行业前10的网站建设公seo排名怎样
  • 企业管理软件都有哪些求职seo推荐
  • 有什么网站是做平面设计的免费发布友链
  • 中国建设招标网是权威网站吗色盲测试图免费测试
  • 建设适应连锁行业网站最新推广赚钱的app
  • 网页传奇公益服上海关键词优化公司bwyseo
  • 电商模式有哪几种纯手工seo公司
  • 湖南网站建设服务设计网站推荐
  • 有哪些做的好的自学网站网络营销推广策划方案
  • 金山办公给我发验证码丹东seo推广优化报价
  • wordpress robots规则青岛设计优化公司
  • 会小二也是做会议网站的网站设计公司