1) Print Elements of Linked List
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class Node { | |
int data; | |
Node nextNode; | |
} | |
/** | |
* This method prints all the Nodes/Values of the | |
* LinkedList | |
* | |
*/ | |
public void printNodes() { | |
Node currentNode = headNode; | |
if(currentNode==null) { | |
System.out.println(" The Node is Null"); | |
return; | |
} else { | |
System.out.print(" "+ currentNode.getData()); | |
while(currentNode.getNextNode()!=null) { | |
currentNode = currentNode.getNextNode(); | |
System.out.print("=> "+ currentNode.getData()); | |
} | |
} | |
} |
2) Reverse LinkedList
3) Delete a given Element of a LinkedList
4) Delete kth Element from headNode of a LinkedList
5) Delete kth Element from tailNode of a LinkedList
6) Detect if a LinkedList contains a Cycle
7) Remove an Element from a DoublyLinkedList
8) Merge Elements of a DoublyLinkedList
9) Create a Cache such that the Elements can be added at Head and removed from Tail, in O(1)
10) Merge K Sorted Lists
K Sorted Linked Lists cab be merged using MinHeap. All the elements from all the K Linked Lists are added to the MinHeap one by one. Create a Dummy LinkedList Node and add all the nodes from the Min Heap to the LinkedList node. Return the Next Node of the dummy Node which becomes the head for the combined LinkedList.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Definition for singly-linked list. | |
* public class ListNode { | |
* int val; | |
* ListNode next; | |
* ListNode(int x) { val = x; } | |
* } | |
*/ | |
class Solution { | |
public ListNode mergeKLists(ListNode[] lists) { | |
PriorityQueue<Integer> minHeap = new PriorityQueue<>(); | |
for(ListNode listNode : lists) { | |
ListNode pointer = listNode; | |
while(pointer!=null) { | |
minHeap.add(pointer.val); | |
pointer = pointer.next; | |
} | |
} | |
ListNode dummy = new ListNode(0); | |
ListNode temp = dummy; | |
while(!minHeap.isEmpty()) { | |
temp.next = new ListNode(minHeap.remove()); | |
temp = temp.next; | |
} | |
return dummy.next; | |
} | |
} |
Comments
Post a Comment