微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

2022-4-4 高频面试题

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 举报,一经查实,本站将立刻删除。

相关推荐