首页 > 代码库 > Leetcode 148. Sort List 归并排序 in Java
Leetcode 148. Sort List 归并排序 in Java
148. Sort List
- Total Accepted: 81218
- Total Submissions: 309907
- Difficulty: Medium
Sort a linked list in O(n log n) time using constant space complexity.
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */public class Solution { public ListNode sortList(ListNode head) { if(head==null || head.next==null) return head;//当分到只有一个node的时候,直接返回 ListNode mid=findMid(head); ListNode secList=mid.next; mid.next=null; return mergeList( sortList(head) , sortList(secList) ); } public ListNode findMid(ListNode head){ //找到中点区分上半段list和下半段list ListNode slow=head; ListNode fast=head; while(fast.next!=null && fast.next.next!=null){ //让slow最终留在前半段list的末尾处,而不是后半段的第一个 slow=slow.next; fast=fast.next.next; } return slow; } public ListNode mergeList(ListNode fst,ListNode sec){//合并list ListNode newHead=new ListNode(0); ListNode tmpHead=newHead; while(fst!=null && sec!=null){ if(fst.val<=sec.val){ tmpHead.next=fst; fst=fst.next; tmpHead=tmpHead.next; tmpHead.next=null; }else{ tmpHead.next=sec; sec=sec.next; tmpHead=tmpHead.next; tmpHead.next=null; } } tmpHead.next=(fst==null)?sec:fst; return newHead.next; }}
Leetcode 148. Sort List 归并排序 in Java
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。