File tree Expand file tree Collapse file tree 1 file changed +78
-0
lines changed Expand file tree Collapse file tree 1 file changed +78
-0
lines changed Original file line number Diff line number Diff line change
1
+ /*
2
+ * @lc app=leetcode.cn id=148 lang=java
3
+ *
4
+ * [148] 排序链表
5
+ */
6
+
7
+ // @lc code=start
8
+ /**
9
+ * Definition for singly-linked list.
10
+ * public class ListNode {
11
+ * int val;
12
+ * ListNode next;
13
+ * ListNode() {}
14
+ * ListNode(int val) { this.val = val; }
15
+ * ListNode(int val, ListNode next) { this.val = val; this.next = next; }
16
+ * }
17
+ */
18
+ class Solution {
19
+ public ListNode sortList (ListNode head ) {
20
+ return mergeSort (head );
21
+ }
22
+
23
+ public ListNode findMiddle (ListNode node ) {
24
+ ListNode slow = node ;
25
+ ListNode fast = node .next ;
26
+
27
+ while (fast != null && fast .next != null ) {
28
+ fast = fast .next .next ;
29
+ slow = slow .next ;
30
+ }
31
+
32
+ return slow ;
33
+ }
34
+
35
+ public ListNode mergeTwoLists (ListNode node1 , ListNode node2 ) {
36
+ ListNode dummy = new ListNode ();
37
+ ListNode head = dummy ;
38
+
39
+ while (node1 != null && node2 != null ) {
40
+ if (node1 .val < node2 .val ) {
41
+ head .next = node1 ;
42
+ node1 = node1 .next ;
43
+ } else {
44
+ head .next = node2 ;
45
+ node2 = node2 .next ;
46
+ }
47
+
48
+ head = head .next ;
49
+ }
50
+
51
+ if (node1 != null ) {
52
+ head .next = node1 ;
53
+ }
54
+
55
+ if (node2 != null ) {
56
+ head .next = node2 ;
57
+ }
58
+
59
+ return dummy .next ;
60
+ }
61
+
62
+ public ListNode mergeSort (ListNode node ) {
63
+ if (node == null || node .next == null ) {
64
+ return node ;
65
+ }
66
+
67
+ ListNode middleNode = findMiddle (node );
68
+ ListNode middleNodeNext = middleNode .next ;
69
+ middleNode .next = null ;
70
+
71
+ ListNode node1 = mergeSort (node );
72
+ ListNode node2 = mergeSort (middleNodeNext );
73
+
74
+ return mergeTwoLists (node1 , node2 );
75
+ }
76
+ }
77
+ // @lc code=end
78
+
You can’t perform that action at this time.
0 commit comments