25. Reverse Nodes in k-Group
Problem
Analysis
Code
/**
* Definition for singly-linked list.
* class ListNode(var `val`: Int = 0) {
* var next: ListNode? = null
* }
*/
class Solution {
fun reverseKGroup(head: ListNode?, k: Int): ListNode? {
val h = ListNode(0)
h.next = head
var node = h
var left = h.next
var right: ListNode?
var temp: ListNode?
while (left != null) {
temp = left
(1 until k).forEach { left = left?.next ?: return h.next }
right = left?.next
while (temp != left) {
node.next = temp?.next
temp?.next = right
left?.next = temp
right = temp
temp = node.next
}
(1..k).forEach { node = node.next!! }
left = node.next
}
return h.next
}
}Last updated