将给定的链表向右转动k个位置,k是非负数。
例如:
给定1->2->3->4->5->null , k=2,
返回4->5->1->2->3->null。
思路:找到倒数第k个位置,然后把它前面的指针指向null,最后一个指针,指向头结点。需要注意k比链表的长度大。
package main
import . "nc_tools"
/*
* type ListNode struct{
* Val int
* Next *ListNode
* }
*/
/**
*
* @param head ListNode类
* @param k int整型
* @return ListNode类
*/
func rotateRight( head *ListNode , k int ) *ListNode {
// write code here
node := head
if head == nil {
return nil
}
lenList := 1
for node.Next != nil {
node = node.Next
lenList++
}
node.Next = head
//node = head
for i := 0; i < lenList-k%lenList; i++ {
node = node.Next
}
head = node.Next
node.Next = nil
return head
}