| 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)))
 
- } */
 
 
  |