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 }

思路:插入排序。 可以归并排序。快慢指针确定中点,再各自排序合并。

相关文章

这篇文章主要介绍“基于nodejs的ssh2怎么实现自动化部署”的...
本文小编为大家详细介绍“nodejs怎么实现目录不存在自动创建...
这篇“如何把nodejs数据传到前端”文章的知识点大部分人都不...
本文小编为大家详细介绍“nodejs如何实现定时删除文件”,内...
这篇文章主要讲解了“nodejs安装模块卡住不动怎么解决”,文...
今天小编给大家分享一下如何检测nodejs有没有安装成功的相关...