Advertisement
1988coder

147. Insertion Sort List

Jan 6th, 2019
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.21 KB | None | 0 0
  1. // LeetCode URL: https://leetcode.com/problems/insertion-sort-list/
  2. //  Definition for singly-linked list.
  3. // class ListNode {
  4. //     int val;
  5. //     ListNode next;
  6.  
  7. //     ListNode(int x) {
  8. //         val = x;
  9. //     }
  10. // }
  11.  
  12. /**
  13.  * Time Complexity: O(N^2)
  14.  *
  15.  * Space Complexity: O(1)
  16.  *
  17.  * N = Length of the input list.
  18.  */
  19. class Solution {
  20.     public ListNode insertionSortList(ListNode head) {
  21.         if (head == null) {
  22.             return null;
  23.         }
  24.  
  25.         ListNode dummySorted = new ListNode(-1);
  26.         ListNode curr = head;
  27.         ListNode prevSorted = dummySorted;
  28.  
  29.         while (curr != null) {
  30.             ListNode next = curr.next;
  31.  
  32.             // This will only reset prevSorted to dummySorted only if the current prevSorted
  33.             // is greater than curr node.
  34.             if (curr.val < prevSorted.val) {
  35.                 prevSorted = dummySorted;
  36.             }
  37.  
  38.             while (prevSorted.next != null && curr.val > prevSorted.next.val) {
  39.                 prevSorted = prevSorted.next;
  40.             }
  41.  
  42.             curr.next = prevSorted.next;
  43.             prevSorted.next = curr;
  44.  
  45.             curr = next;
  46.         }
  47.  
  48.         return dummySorted.next;
  49.     }
  50. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement