From 7a33a111b1740f21129c37b88c144465be01b77e Mon Sep 17 00:00:00 2001 From: wu xiangkai Date: Wed, 29 Oct 2025 10:18:53 +0800 Subject: [PATCH] =?UTF-8?q?feat:=202025-10-29=E6=89=93=E5=8D=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 23.merge-k-sorted-lists.java | 66 ++++++++++++++++++++++++++++++++ 25.reverse-nodes-in-k-group.java | 48 +++++++++++++++++++++++ 92.reverse-linked-list-ii.java | 17 ++++---- 3 files changed, 124 insertions(+), 7 deletions(-) create mode 100644 23.merge-k-sorted-lists.java create mode 100644 25.reverse-nodes-in-k-group.java diff --git a/23.merge-k-sorted-lists.java b/23.merge-k-sorted-lists.java new file mode 100644 index 0000000..0bbde63 --- /dev/null +++ b/23.merge-k-sorted-lists.java @@ -0,0 +1,66 @@ +/* + * @lc app=leetcode id=23 lang=java + * + * [23] Merge k Sorted Lists + */ + +// @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 mergeKLists(ListNode[] lists) { + if(lists == null || lists.length == 0) { + return null; + } + return mergeRecursively(lists, 0, lists.length-1); + } + + private ListNode mergeRecursively(ListNode[] lists, int i, int j) { + if (i > j) { + return null; + }else if(i == j) { + return lists[i]; + } else if (j - i == 1) { + return merge(lists[i], lists[j]); + } + int m = (i+j)/2; + return merge(mergeRecursively(lists, i, m), mergeRecursively(lists, m+1, j)); + } + + private ListNode merge(ListNode l1, ListNode l2) { + ListNode dummy = new ListNode(0), tail = dummy; + dummy.next = null; + while(l1 != null || l2 != null) { + if(l1 == null || l2 == null) { + if(l1 != null) { + tail.next = l1; + } else if(l2 != null) { + tail.next = l2; + } + break; + } + if(l1.val <= l2.val) { + tail.next = l1; + l1 = l1.next; + tail = tail.next; + tail.next = null; + } else { + tail.next = l2; + l2 = l2.next; + tail = tail.next; + tail.next = null; + } + } + return dummy.next; + } +} +// @lc code=end + diff --git a/25.reverse-nodes-in-k-group.java b/25.reverse-nodes-in-k-group.java new file mode 100644 index 0000000..4cded2f --- /dev/null +++ b/25.reverse-nodes-in-k-group.java @@ -0,0 +1,48 @@ +/* + * @lc app=leetcode id=25 lang=java + * + * [25] Reverse Nodes in k-Group + */ + +// @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 reverseKGroup(ListNode head, int k) { + ListNode dummy = new ListNode(0), prev, frm, to; + dummy.next = head; + prev = dummy; + while(prev.next != null) { + frm = to = prev.next; + for(int i = 0; i