首页 > 代码库 > [LeetCode]23 Merge k Sorted Lists
[LeetCode]23 Merge k Sorted Lists
https://oj.leetcode.com/problems/merge-k-sorted-lists/
http://fisherlei.blogspot.com/2012/12/leetcode-merge-k-sorted-lists.html
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */ public class Solution { public ListNode mergeKLists(List<ListNode> lists) { if (lists == null || lists.isEmpty()) return null; // 如果不使用heap,需要定义一个函数找出最小node // // Define a min heap PriorityQueue<ListNode> heap = new PriorityQueue<ListNode>(lists.size(), new Comparator<ListNode>() { public int compare(ListNode a, ListNode b) { return Integer.compare(a.val, b.val); } }); // Build the min heap for (ListNode node : lists) { if (node != null) { heap.offer(node); } } ListNode head = null; ListNode tail = null; while (!heap.isEmpty()) { ListNode node = heap.poll(); if (head == null) head = node; if (tail != null) tail.next = node; tail = node; ListNode nextnode = node.next; if (nextnode != null) heap.offer(nextnode); } return head; } }
[LeetCode]23 Merge k Sorted Lists
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。