LeetCode-in-Net.github.io

148. Sort List

Medium

Given the head of a linked list, return the list after sorting it in ascending order.

Example 1:

Input: head = [4,2,1,3]

Output: [1,2,3,4]

Example 2:

Input: head = [-1,5,3,4,0]

Output: [-1,0,3,4,5]

Example 3:

Input: head = []

Output: []

Constraints:

Follow up: Can you sort the linked list in O(n logn) time and O(1) memory (i.e. constant space)?

Solution

using LeetCodeNet.Com_github_leetcode;

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     public int val;
 *     public ListNode next;
 *     public ListNode(int val=0, ListNode next=null) {
 *         this.val = val;
 *         this.next = next;
 *     }
 * }
 */
public class Solution {
    public ListNode SortList(ListNode head) {
        List<int> nums = new List<int>();
        ListNode temp = head;
        while (temp != null) {
            nums.Add(temp.val);
            temp = temp.next;
        }
        _ = new int[nums.Count()];
        int[] arr = nums.ToArray();
        Array.Sort(arr);
        temp = head;
        int i = 0;
        while (temp != null) {
            temp.val = arr[i];
            temp = temp.next;
            i++;
        }
        return head;
    }
}