Problem of the day
You are given a Singly Linked List of integers which is sorted based on absolute value.
You have to sort the Linked List based on actual values.
The absolute value of a real number x, denoted |x|, is the non-negative value of x without regard to its sign.
Example:If the given list is {1 -> -2 -> 3} (which is sorted on absolute value), the returned list should be {-2 -> 1 -> 3}.
The first line of input contains a single integer ‘T’, representing the number of test cases or queries to be run. Then the T test cases follow.
The first line of each test case contains the elements of the singly linked list separated by a single space and terminated by -1. Hence, -1 would never be a list element.
It is guaranteed that the given list is sorted based on absolute value.
Output Format:
For each test case, print the sorted linked list. The elements of the sorted list should be single-space separated, terminated by -1.
The output of each test case is printed in a separate line.
Note :
You don't need to print the output, it has already been taken care of. Just implement the given function.
1 <= T <= 10
1 <= 'N' <= 5 * 10^4
-10^9 <= 'data' <= 10^9 and 'data' != -1
Where 'N' denotes the number of elements in the Singly Linked List and 'data' represents the value of those elements.
Time Limit : 1 sec
3
1 -2 3 -1
9 9 -1
4 -1
-2 1 3 -1
9 9 -1
4 -1
For the first test case:
On arranging element from lowest to highest we get ‘-2 1 3 -1’ so we return it as the answer.
For the second test case:
On arranging element from lowest to highest we get ‘9 9 -1’ so we return it as the answer.
For the third test case:
On arranging element from lowest to highest we get ‘4 -1’ so we return it as the answer.
2
1 1 1 -1
3 -3 -1
1 1 1 -1
-3 3 -1
You can use any sorting algorithm to sort the linked list.
We will use the ‘Insertion Sort’ algorithm to sort the given linked list.
We will make a list ‘SORTED_LIST’ which is initially empty and it stores the list after sorting.
We will traverse the given list and insert the node in the ‘SORTED_LIST’ such that nodes are present in sorted order.
For each node follow these steps:
O(N ^ 2), where ‘N’ is the number of nodes in the linked list.
In the worst case, it takes O(N) time to insert the node in ‘SORTED_LIST’, and traversing the list takes O(N) time. Thus, the final time complexity is O(N ^ 2).
O(N), where ‘N’ is the number of nodes in the linked list.
As O(N) additional space is required to store the ‘SORTED_LIST’.