mirror of
https://github.com/TheAlgorithms/Java.git
synced 2025-07-09 20:20:56 +08:00
Update Merge_K_SortedLinkedlist.java
format code
This commit is contained in:
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
Reference in New Issue
Block a user