Untitled
class ListNode { int val; ListNode next; ListNode() {} ListNode(int val) { this.val = val; } ListNode(int val, ListNode next) { this.val = val; this.next = next; } } public class Solution { public ListNode reverseKGroup(ListNode head, int k) { if (head == null || k == 1) { return head; } ListNode dummy = new ListNode(0); dummy.next = head; ListNode prev = dummy; ListNode curr = head; int count = 0; while (curr != null) { count++; if (count % k == 0) { prev = reverse(prev, curr.next); curr = prev.next; } else { curr = curr.next; } } return dummy.next; } private ListNode reverse(ListNode prev, ListNode next) { ListNode last = prev.next; ListNode curr = last.next; while (curr != next) { last.next = curr.next; curr.next = prev.next; prev.next = curr; curr = last.next; } return last; } // Helper method to print the linked list public static void printList(ListNode head) { ListNode curr = head; while (curr != null) { System.out.print(curr.val + " "); curr = curr.next; } System.out.println(); } public static void main(String[] args) { // Example 1 ListNode head1 = new ListNode(1, new ListNode(2, new ListNode(3, new ListNode(4, new ListNode(5))))); Solution solution = new Solution(); ListNode result1 = solution.reverseKGroup(head1, 2); printList(result1); // Output: 2 1 4 3 5 // Example 2 ListNode head2 = new ListNode(1, new ListNode(2, new ListNode(3, new ListNode(4, new ListNode(5))))); ListNode result2 = solution.reverseKGroup(head2, 3); printList(result2); // Output: 3 2 1 4 5 } }
Leave a Comment