# 61. Rotate List

## Description

Given a linked list, rotate the list to the right by k places, where k is non-negative.

Example 1:

Input: 1->2->3->4->5->NULL, k = 2
Output: 4->5->1->2->3->NULL
Explanation:
rotate 1 steps to the right: 5->1->2->3->4->NULL
rotate 2 steps to the right: 4->5->1->2->3->NULL

Example 2:

Input: 0->1->2->NULL, k = 4
Output: 2->0->1->NULL
Explanation:
rotate 1 steps to the right: 2->0->1->NULL
rotate 2 steps to the right: 1->2->0->NULL
rotate 3 steps to the right: 0->1->2->NULL
rotate 4 steps to the right: 2->0->1->NULL

## 题解

### 思路1

1. 先计算出链表的长度，判断 k 是否大于链表的长度。
2. 如果 k 大于链表的长度，取 k = k % len(LinkedList)
3. 将链表变为环形链表。
4. 移动 length - k - 1 位，然后断开链表。
/*
* @lc app=leetcode id=61 lang=golang
*
* [61] Rotate List
*/
/**
* type ListNode struct {
*     Val int
*     Next *ListNode
* }
*/
func rotateRight(head *ListNode, k int) *ListNode {
if nil == head || 0 == k {
}
if k >= length {
k = k % length
}
for i := 0; i < length - k - 1; i++ {
}
return p
}

func cycleList(l *ListNode) (*ListNode, int) {
for l.Next != nil {
l = l.Next
length++
}
}