15(March) Linked List that is Sorted Alternatingly

15. Linked List Sorted Alternatingly

The problem can be found at the following link: Question Link

Problem Description

You are given a Linked list of size n. The list is in alternating ascending and descending orders. Sort the given linked list in non-decreasing order.

Example:

Input:

n = 6
LinkedList = 1->9->2->8->3->7

Output:

1 2 3 7 8 9

Explanation: After sorting the given list will be 1->2->3->7->8->9.

Your Task:

You do not need to read input or print anything. The task is to complete the function sort() which should sort the linked list of size n in non-decreasing order.

Expected Time Complexity: O(n), where n is the number of nodes in the linked list. Expected Auxiliary Space Complexity: O(1), where n is the number of nodes in the linked list, for the recursive stack space used by the merge sort algorithm.

Constraints:

  • 1 <= Number of nodes <= 100

  • 0 <= Values of the elements in linked list <= 10^3

My Approach

Certainly! Here's your approach described in words:

  1. Merge Sort Implementation:

    • We implement the merge sort algorithm for sorting the linked list in non-decreasing order.

  2. Base Cases:

    • If the linked list is empty or has only one node, it is already considered sorted, so we return the head of the list.

  3. Finding the Middle Node:

    • We find the middle node of the linked list using the slow and fast pointer technique. This allows us to split the list into two halves.

  4. Recursively Sorting Halves:

    • We recursively sort each half of the list by calling the mergeSort function on each half.

  5. Merging Sorted Halves:

    • We merge the sorted halves using the merge function. This involves comparing the values of nodes from both halves and merging them in non-decreasing order.

  6. Merging Process:

    • We merge the sorted halves by comparing the values of nodes from both halves and merging them into a single sorted list.

  7. Updating Head:

    • Finally, we update the head of the list to point to the merged and sorted list obtained from the mergeSort function.

Code (C++)

Contribution and Support

For discussions, questions, or doubts related to this solution, feel free to connect on LinkedIn: Any Questions. Let’s make this learning journey more collaborative!

⭐ If you find this helpful, please give this repository a star! ⭐


📍Visitor Count

Last updated