2046. Sort Linked List Already Sorted Using Absolute Values

2046. Sort Linked List Already Sorted Using absolute Values #

题目 #

给定链表头结点 head,该链表根据结点的 绝对值 进行 升序 排序,返回重新根据 结点的值 进行 升序 排序的链表。

思路 #

代码 #

public class ListNode {
    int val;
    ListNode next;
    ListNode() {}
    ListNode(int val) { this.val = val; }
    ListNode(int val, ListNode next) { this.val = val; this.next = next; }
}
class Solution {
    public ListNode sortLinkedList(ListNode head) {
        ListNode sentinel = new ListNode(-1, head);
        ListNode ptr = head;
        while (ptr != null && ptr.next != null) {
            if (ptr.next.val <= sentinel.next.val) {
                ListNode node = ptr.next;
                ptr.next = node.next;
                
                node.next = sentinel.next;
                sentinel.next = node;
            }
            else ptr = ptr.next;
        }
        return sentinel.next;
    }
}