| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 | package main// ListNode .../* type ListNode struct {	Val  int	Next *ListNode} *//* func list2str(head *ListNode) string {	curr := head	str := make([]rune, 0)	for curr != nil {		str = append(str, rune(curr.Val+'0'))		curr = curr.Next	}	return string(str)} *//** * Definition for singly-linked list. * type ListNode struct { *     Val int *     Next *ListNode * } */func rotateRight(head *ListNode, k int) *ListNode {	if head == nil || head.Next == nil {		return head	}	dummy := ListNode{0, head}	curr := &dummy	length := 0	for curr.Next != nil {		curr = curr.Next		length++	}	k %= length	if k == 0 {		return dummy.Next	}	fast := &dummy	curr = &dummy	for i := 0; i < k; i++ {		fast = fast.Next	}	for fast.Next != nil {		fast = fast.Next		curr = curr.Next	}	fast.Next = dummy.Next	dummy.Next = curr.Next	curr.Next = nil	return dummy.Next}/* func main() {	l16 := ListNode{6, nil}	l15 := ListNode{5, &l16}	l14 := ListNode{4, &l15}	l13 := ListNode{3, &l14}	l12 := ListNode{2, &l13}	l1 := &ListNode{1, &l12}	fmt.Println(list2str(l1))	fmt.Println(list2str(rotateRight(l1, 0)))	fmt.Println(list2str(rotateRight(l1, 1)))	fmt.Println(list2str(rotateRight(&l16, 2)))	fmt.Println(list2str(rotateRight(&l14, 3)))	fmt.Println(list2str(rotateRight(l1, 4)))	fmt.Println(list2str(rotateRight(&l13, 5)))	fmt.Println(list2str(rotateRight(&l14, 6)))	fmt.Println(list2str(rotateRight(&l14, 7)))} */
 |