feat: 2025-10-27打卡
This commit is contained in:
63
148.sort-list.java
Normal file
63
148.sort-list.java
Normal file
@@ -0,0 +1,63 @@
|
||||
/*
|
||||
* @lc app=leetcode id=148 lang=java
|
||||
*
|
||||
* [148] Sort List
|
||||
*/
|
||||
|
||||
// @lc code=start
|
||||
/**
|
||||
* Definition for singly-linked list.
|
||||
* public class ListNode {
|
||||
* int val;
|
||||
* ListNode next;
|
||||
* ListNode() {}
|
||||
* ListNode(int val) { this.val = val; }
|
||||
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
|
||||
* }
|
||||
*/
|
||||
class Solution {
|
||||
public ListNode sortList(ListNode head) {
|
||||
if(head == null || head.next == null) {
|
||||
return head;
|
||||
}
|
||||
ListNode slow = head, fast = head, prev = null;
|
||||
while(fast != null && fast.next != null) {
|
||||
fast = fast.next.next;
|
||||
prev = slow;
|
||||
slow = slow.next;
|
||||
}
|
||||
prev.next = null;
|
||||
ListNode l1 = sortList(head);
|
||||
ListNode l2 = sortList(slow);
|
||||
return merge(l1, l2);
|
||||
}
|
||||
|
||||
private ListNode merge(ListNode l1, ListNode l2) {
|
||||
ListNode dummy = new ListNode(0), tail = dummy, tmp;
|
||||
dummy.next = null;
|
||||
while(l1 != null || l2 != null) {
|
||||
if(l1 == null || l2 == null) {
|
||||
if(l1 != null) {
|
||||
tail.next = l1;
|
||||
} else {
|
||||
tail.next = l2;
|
||||
}
|
||||
break;
|
||||
} else {
|
||||
if(l1.val <= l2.val) {
|
||||
tmp = l1;
|
||||
l1 = l1.next;
|
||||
} else {
|
||||
tmp = l2;
|
||||
l2 = l2.next;
|
||||
}
|
||||
}
|
||||
tail.next = tmp;
|
||||
tail = tail.next;
|
||||
tail.next = null;
|
||||
}
|
||||
return dummy.next;
|
||||
}
|
||||
}
|
||||
// @lc code=end
|
||||
|
||||
Reference in New Issue
Block a user