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

网站开发手机app建设第三方公众号平台网站教程

网站开发手机app,建设第三方公众号平台网站教程,网站视频主持,手机建立网站app题目 输入k个排序的链表,请将它们合并成一个排序的链表。 分析:利用最小堆选取值最小的节点 用k个指针分别指向这k个链表的头节点,每次从这k个节点中选取值最小的节点。然后将指向值最小的节点的指针向后移动一步,再比较k个指…

题目

输入k个排序的链表,请将它们合并成一个排序的链表。
在这里插入图片描述

分析:利用最小堆选取值最小的节点

用k个指针分别指向这k个链表的头节点,每次从这k个节点中选取值最小的节点。然后将指向值最小的节点的指针向后移动一步,再比较k个指针指向的节点并选取值最小的节点。重复这个过程,直到所有节点都被选取出来。

public class Test {public static void main(String[] args) {ListNode listNode1 = new ListNode(1);ListNode listNode2 = new ListNode(2);ListNode listNode3 = new ListNode(3);ListNode listNode4 = new ListNode(4);ListNode listNode5 = new ListNode(5);ListNode listNode6 = new ListNode(6);ListNode listNode7 = new ListNode(7);ListNode listNode8 = new ListNode(8);ListNode listNode9 = new ListNode(9);listNode1.next = listNode4;listNode4.next = listNode7;listNode2.next = listNode5;listNode5.next = listNode8;listNode3.next = listNode6;listNode6.next = listNode9;ListNode[] lists = {listNode1, listNode2, listNode3};ListNode result = mergeKLists(lists);while (result != null) {System.out.println(result.val);result = result.next;}}public static ListNode mergeKLists(ListNode[] lists) {ListNode dummy = new ListNode(0);ListNode cur = dummy;PriorityQueue<ListNode> minHeap = new PriorityQueue<>((n1, n2) -> n1.val - n2.val);for (ListNode list : lists) {if (list != null) {minHeap.offer(list);}}while (!minHeap.isEmpty()) {ListNode least = minHeap.poll();cur.next = least;cur = least;if (least.next != null) {minHeap.offer(least.next);}}return dummy.next;}
}

分析:按照归并排序的思路合并链表

输入的k个排序链表可以分成两部分,前k/2个链表和后k/2个链表。如果将前k/2个链表和后k/2个链表分别合并成两个排序的链表,再将两个排序的链表合并,那么所有链表都合并了。合并k/2个链表与合并k个链表是同一个问题,可以调用递归函数解决。

public class Test {public static void main(String[] args) {ListNode listNode1 = new ListNode(1);ListNode listNode2 = new ListNode(2);ListNode listNode3 = new ListNode(3);ListNode listNode4 = new ListNode(4);ListNode listNode5 = new ListNode(5);ListNode listNode6 = new ListNode(6);ListNode listNode7 = new ListNode(7);ListNode listNode8 = new ListNode(8);ListNode listNode9 = new ListNode(9);listNode1.next = listNode4;listNode4.next = listNode7;listNode2.next = listNode5;listNode5.next = listNode8;listNode3.next = listNode6;listNode6.next = listNode9;ListNode[] lists = {listNode1, listNode2, listNode3};ListNode result = mergeKLists(lists);while (result != null) {System.out.println(result.val);result = result.next;}}public static ListNode mergeKLists(ListNode[] lists) {if (lists.length == 0) {return null;}return mergeLists(lists, 0, lists.length);}private static ListNode mergeLists(ListNode[] lists, int start, int end) {if (start + 1 == end) {return lists[start];}int mid = (start + end) / 2;ListNode head1 = mergeLists(lists, start, mid);ListNode head2 = mergeLists(lists, mid, end);return merge(head1, head2);}private static ListNode merge(ListNode head1, ListNode head2) {ListNode dummy = new ListNode(0);ListNode cur = dummy;while (head1 != null && head2 != null) {if (head1.val < head2.val) {cur.next = head1;head1 = head1.next;}else {cur.next = head2;head2 = head2.next;}cur = cur.next;}cur.next = head1 == null ? head2 : head1;return dummy.next;}
}
http://www.yayakq.cn/news/841402/

相关文章:

  • 网站取源用iapp做软件企业网站建设的心得
  • 那个网站可以看高速的建设情况网站logo怎么设计
  • 网站建设和网络推广哪个难做电子信息工程能进国家电网吗
  • page做网站建筑网建设通网站作用
  • 信息化建设办公室网站怎么用手机做抖音上最火的表白网站
  • 宝安印刷网站建设网站转移权重
  • 网页设计教程视频教程嘉兴优化网站价格
  • 北京网站制作公司报价赤城seo网站优化排名
  • 如何做导购网站济南seo培训
  • 深圳建设网站开发东莞网站制作品牌祥奔科技
  • 书画艺术网站建设国内旅游网站排名
  • 牙科网站建设做性的视频网站
  • 合肥大型网站设计公司老薛主机wordpress
  • 注册公司做网站图片在线制作网站
  • 杭州电子商务网站开发招投标网站
  • 开发高端网站建设价格做一个产品网站要多少钱
  • 网页制作与网站建设实战教程网站域名登记证明
  • 郑州企业自助建站系统南翔企业网站开发建设
  • 怎么查询一个网站有没有做竞价朋友要我帮忙做网站
  • 做网站的成本有多少钱金融公司网站设计图
  • 莱芜亓家网站整站排名优化品牌
  • 一个ip两个网站怎么做在线制作ppt免费
  • 温州微网站制作哪里有wordpress mp3 缓存
  • 免费下载模板的网站建设企业网站下载
  • 平潭做网站资产管理wordpress
  • 怎么查到代码是哪个网站做的中国十大企业培训机构排名
  • 知名网站建设公wordpress如何布局标签关键词
  • 济南专业做网站wordpress 点击文章
  • 电子商务网站建设与管理相关论文南山优化网站建设案例
  • 洛阳免费提供建站方案在线图片加文字