力扣【148】排序链表

题目:

给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。

示例 :

输入:head = [4,2,1,3]

输出:[1,2,3,4]

题解:

import java.util.*;


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 sortList(ListNode head) {
        //边界条件
        ListNode tem = head;
        if (head == null || head.next == null) {
            return head;
        }
        //排序
        List<Integer> list = new ArrayList<>();
        while (head != null) {
            list.add(head.val);
            head = head.next;
        }
        Collections.sort(list);
        int i = 0;
        head = tem;
        while (head != null) {
            head.val = list.get(i);
            i++;
            head = head.next;
        }

        return tem;
    }
}

public class Main {
    public static void main(String[] args) {
        ListNode head = new ListNode(5);
        ListNode head1 = new ListNode(2);
        ListNode head2 = new ListNode(1);
        ListNode head3 = new ListNode(3);
        ListNode head4 = new ListNode(4);

        head.next = head1;
        head1.next = head2;
        head2.next = head3;
        head3.next = head4;

        Solution s = new Solution();
        ListNode res = s.sortList(head);
        while (res != null) {
            System.out.print(res.val + "->");
            res = res.next;
        }
    }
}

猜你喜欢

转载自blog.csdn.net/qq1922631820/article/details/111056687