Algorithm
- Initialize two dummy nodes: lessHead and highHead to serve as heads for two separate lists, one for nodes with values less than x and one for nodes with values greater than or equal to x.
- Initialize pointers less and high to keep track of the tail of the two lists respectively.
- Iterate through the original linked list (head) using a temporary pointer temp.
- For each node in the original list:
- If the value of the current node (temp.val) is less than x, append it to the less list.
- If the value of the current node is greater than or equal to x, append it to the high list.
- Connect the tail of the less list to the head of the high list.
- Return the head of the less list, which now contains the partitioned linked list.
Code
class Solution { public ListNode partition(ListNode head, int x) { ListNode lessHead = new ListNode(0); ListNode highHead = new ListNode(0); ListNode less = lessHead, high = highHead; ListNode temp = head; while(temp!=null){ if(temp.val<x){ less.next = new ListNode(temp.val); less = less.next; } else{ high.next = new ListNode(temp.val); high = high.next; } temp = temp.next; } less.next = highHead.next; return lessHead.next; } }
Thanks for reading :)
Feel free to comment and like the post if you found it helpful
Follow for more 🤝 && Happy Coding 🚀
If you enjoy my content, support me by following me on my other socials:
https://linktr.ee/tanujav7
Top comments (0)