Update Merge_K_SortedLinkedlist.java

format code
This commit is contained in:
yanglbme
2019-03-20 16:24:11 +08:00
committed by GitHub
parent f3ef5b64ae
commit 4bc83966c3

View File

@ -1,63 +1,54 @@
import java.util.*; import java.util.Arrays;
import java.util.Comparator;
import java.util.PriorityQueue;
/**
* @author Arun Pandey (https://github.com/pandeyarun709)
*/
public class Merge_K_SortedLinkedlist { public class Merge_K_SortedLinkedlist {
/* /**
* This function merge K sorted LinkedList * This function merge K sorted LinkedList
* @param Node []a : array of LinkedList
* @param int N : size of array
* *
* author Arun Pandey (https://github.com/pandeyarun709) * @param a array of LinkedList
* @param N size of array
* @return node
*/ */
Node mergeKList(Node[]a, int N) Node mergeKList(Node[] a, int N) {
{
// Min Heap // Min Heap
PriorityQueue<Node> min = new PriorityQueue<>(new Comparator<Node>(){ PriorityQueue<Node> min = new PriorityQueue<>(Comparator.comparingInt(x -> x.data));
public int compare(Node x , Node y){
return x.data - y.data;
}
});
// adding head of all linkedList in min heap // adding head of all linkedList in min heap
for(int i =0 ; i< N ;i++) min.addAll(Arrays.asList(a).subList(0, N));
{
min.add(a[i]);
}
// Make new head among smallest heads in K linkedList // Make new head among smallest heads in K linkedList
Node head = min.poll(); Node head = min.poll();
min.add(head.next); min.add(head.next);
Node curr = head; Node curr = head;
//merging LinkedList // merging LinkedList
while(!min.isEmpty()) { while (!min.isEmpty()) {
Node temp = min.poll(); Node temp = min.poll();
curr.next = temp; curr.next = temp;
curr = temp; curr = temp;
//Add Node in min Heap only if temp.next is not null // Add Node in min Heap only if temp.next is not null
if(temp.next != null){ if (temp.next != null) {
min.add(temp.next); min.add(temp.next);
} }
} }
return head; return head;
} }
// Node Class private class Node {
private class Node{
private int data; private int data;
private Node next; private Node next;
public Node(int d) public Node(int d) {
{
this.data = d; this.data = d;
next = null; next = null;
} }
} }
} }