148. 排序链表
给你链表的头结点 head
,请将其按 升序 排列并返回 排序后的链表 。
1 /** 2 * DeFinition for singly-linked list. 3 * public class ListNode { 4 * int val; 5 * ListNode next; 6 * ListNode() {} 7 * ListNode(int val) { this.val = val; } 8 * ListNode(int val, ListNode next) { this.val = val; this.next = next; } 9 * } 10 */ 11 class Solution { 12 public ListNode sortList(ListNode head) { 13 ListNode dummy=new ListNode(-100001); 14 while (head!=null) { 15 insert(dummy,new ListNode(head.val)); 16 head=head.next; 17 } 18 return dummy.next; 19 } 20 21 public void insert(ListNode dummy,ListNode node){ 22 ListNode head=dummy,pre=dummy; 23 while (head!=null&&node.val>head.val) { 24 pre=head; 25 head=head.next; 26 } 27 if (head==null) { 28 pre.next=node; 29 }else { 30 pre.next=node; 31 node.next=head; 32 } 33 return; 34 } 35 }
思路:插入排序。 可以归并排序。快慢指针确定中点,再各自排序合并。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。