From b09e904694ed7be9ba20b02f38ba66538ea09215 Mon Sep 17 00:00:00 2001 From: huangge1199 Date: Mon, 7 Jun 2021 10:38:43 +0800 Subject: [PATCH] =?UTF-8?q?148:=E6=8E=92=E5=BA=8F=E9=93=BE=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/leetcode/editor/cn/SortList.java | 94 +++++++++++++++++++ src/main/java/leetcode/editor/cn/SortList.md | 40 ++++++++ 2 files changed, 134 insertions(+) create mode 100644 src/main/java/leetcode/editor/cn/SortList.java create mode 100644 src/main/java/leetcode/editor/cn/SortList.md diff --git a/src/main/java/leetcode/editor/cn/SortList.java b/src/main/java/leetcode/editor/cn/SortList.java new file mode 100644 index 0000000..e76f752 --- /dev/null +++ b/src/main/java/leetcode/editor/cn/SortList.java @@ -0,0 +1,94 @@ +//给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。 +// +// 进阶: +// +// +// 你可以在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序吗? +// +// +// +// +// 示例 1: +// +// +//输入:head = [4,2,1,3] +//输出:[1,2,3,4] +// +// +// 示例 2: +// +// +//输入:head = [-1,5,3,4,0] +//输出:[-1,0,3,4,5] +// +// +// 示例 3: +// +// +//输入:head = [] +//输出:[] +// +// +// +// +// 提示: +// +// +// 链表中节点的数目在范围 [0, 5 * 104] 内 +// -105 <= Node.val <= 105 +// +// Related Topics 排序 链表 +// 👍 1168 👎 0 + +package leetcode.editor.cn; + +import com.code.leet.entiy.ListNode; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +//148:排序链表 +public class SortList{ + public static void main(String[] args) { + //测试代码 + Solution solution = new SortList().new Solution(); + } + //力扣代码 + //leetcode submit region begin(Prohibit modification and deletion) +/** + * 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) { + List 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; + } +} +//leetcode submit region end(Prohibit modification and deletion) + +} \ No newline at end of file diff --git a/src/main/java/leetcode/editor/cn/SortList.md b/src/main/java/leetcode/editor/cn/SortList.md new file mode 100644 index 0000000..b49344d --- /dev/null +++ b/src/main/java/leetcode/editor/cn/SortList.md @@ -0,0 +1,40 @@ +

给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表

+ +

进阶:

+ + + +

 

+ +

示例 1:

+ +
+输入:head = [4,2,1,3]
+输出:[1,2,3,4]
+
+ +

示例 2:

+ +
+输入:head = [-1,5,3,4,0]
+输出:[-1,0,3,4,5]
+
+ +

示例 3:

+ +
+输入:head = []
+输出:[]
+
+ +

 

+ +

提示:

+ + +
Related Topics
  • 排序
  • 链表
  • \n
  • 👍 1168
  • 👎 0
  • \ No newline at end of file