leetcode 148. 排序链表

题目:

在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。

示例1:

输入: 4->2->1->3
输出: 1->2->3->4

示例1:

输入: 4->2
输出: 2->4

采用归并排序的算法如下:


class Solution {
    public ListNode sortList(ListNode head) {
        if(head==null||head.next==null)return head;
        ListNode slow=head,fast=head.next;//针对只有两个节点的情况
        while (fast!=null&&fast.next!=null){
            slow=slow.next;
            fast=fast.next.next;
        }
        ListNode temp=slow.next;
        slow.next=null;//前半部分断开
        ListNode left=this.sortList(head);
        ListNode right=this.sortList(temp);
        ListNode prev=new ListNode(-1);
        ListNode res=prev;
        while (left!=null&&right!=null){
            if(left.val

 

你可能感兴趣的:(leetcode)