题解 | #牛群旋转#
牛群旋转
https://www.nowcoder.com/practice/5137e606573843e5bf4d8ea0d8ade7f4
class ListNode {
val: number
next: ListNode | null
constructor(val?: number, next?: ListNode | null) {
this.val = (val === undefined ? 0 : val)
this.next = (next === undefined ? null : next)
}
}
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param head ListNode类
* @param k int整型
* @return ListNode类
*/
export function rotateLeft(head: ListNode, k: number): ListNode {
// write code here
let leftNode: ListNode = head
let rightNode: ListNode = head
let index: number = 0
let length = 0
let countNode = head
while (countNode) {
countNode = countNode.next
length++
}
let K = k % length
if (K === 0) {
return head
}
while (index < K + 1) {
rightNode = rightNode.next
index++
}
while (rightNode !== null) {
leftNode = leftNode.next
rightNode = rightNode.next
}
let dummy = new ListNode(-1)
let curr = dummy
dummy.next = leftNode.next
leftNode.next = null
while (curr.next) {
curr = curr.next
}
curr.next = head
return dummy.next
}
