单链表的排序

采用归并排序的方法。 注意递归时的终止条件为head==null||head.next==null; 首先通过快慢指针(首先让快指针先走一个),找到中点。 从中点分开进行归并,即 ListNode left=sortInList(head); ListNode right=sortInList(tmp); 之后new一个头节点拼接剩下的结点 最后判定一下是否还有剩下的节点进行拼接即可。

public ListNode sortInList (ListNode head) {
        // write code here
         if(head==null||head.next==null) return head;
        ListNode fast=head.next;
        ListNode slow=head;

        while (fast!=null&&fast.next!=null){
            fast=fast.next.next;
            slow=slow.next;
        }
        ListNode tmp=slow.next;
        slow.next=null;
        ListNode left=sortInList(head);
        ListNode right=sortInList(tmp);

        ListNode h=new ListNode(0);
        ListNode h0=h;
        while (left!=null&&right!=null){
            if(left.val< right.val){
                h0.next=left;
                left=left.next;
            }else {
                h0.next=right;
                right=right.next;
            }
            h0=h0.next;
        }
        h0.next=left!=null?left:right;
        return h.next;
    }



全部评论

相关推荐

之前自己不懂事,投了字节,基本是自己第一次面试,一面就挂了
观水:前几天有个学化学的做前端,加上实习面了22次字节最后成功了
点赞 评论 收藏
分享
2025-12-19 15:04
门头沟学院 Java
小肥罗:hr爱上你了,你负责吗哈哈
点赞 评论 收藏
分享
程序员花海:实习和校招简历正确格式应该是教育背景+实习+项目经历+个人评价 其中项目经历注意要体现业务 实习经历里面的业务更是要自圆其说 简历模板尽可能保持干净整洁 不要太花哨的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务