力扣:148. 排序链表
This commit is contained in:
parent
095f673244
commit
234ee52276
@ -0,0 +1,69 @@
|
||||
package com.code.leet.study.LinkNode.t20210210;
|
||||
|
||||
import com.code.leet.entiy.ListNode;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。
|
||||
* <p>
|
||||
* 进阶:
|
||||
* <p>
|
||||
* 你可以在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序吗?
|
||||
*
|
||||
* <p>
|
||||
* 示例 1:
|
||||
* <p>
|
||||
* <p>
|
||||
* 输入:head = [4,2,1,3]
|
||||
* 输出:[1,2,3,4]
|
||||
* 示例 2:
|
||||
* <p>
|
||||
* <p>
|
||||
* 输入:head = [-1,5,3,4,0]
|
||||
* 输出:[-1,0,3,4,5]
|
||||
* 示例 3:
|
||||
* <p>
|
||||
* 输入:head = []
|
||||
* 输出:[]
|
||||
*
|
||||
* <p>
|
||||
* 提示:
|
||||
* <p>
|
||||
* 链表中节点的数目在范围 [0, 5 * 104] 内
|
||||
* -105 <= Node.val <= 105
|
||||
* <p>
|
||||
* 来源:力扣(LeetCode)
|
||||
* 链接:https://leetcode-cn.com/problems/sort-list
|
||||
* 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
|
||||
*/
|
||||
public class SortList {
|
||||
/**
|
||||
* 148. 排序链表
|
||||
* @param head
|
||||
* @return
|
||||
*/
|
||||
public ListNode sortList(ListNode head) {
|
||||
List<ListNode> list = new ArrayList<>();
|
||||
while (head != null) {
|
||||
list.add(head);
|
||||
head = head.next;
|
||||
}
|
||||
Collections.sort(list, (n1, n2) -> n1.val - n2.val);
|
||||
int size = list.size();
|
||||
if (size == 0) {
|
||||
return null;
|
||||
}
|
||||
head = list.get(0);
|
||||
ListNode temp = head;
|
||||
for (int i = 1; i < size; i++) {
|
||||
temp.next = list.get(i);
|
||||
temp.next.next = null;
|
||||
temp = temp.next;
|
||||
}
|
||||
|
||||
return head;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user