leetcode刷题笔记(Golang)--61. Rotate List

61. Rotate List

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

先对K%len(list)之后在进行翻转操作

func rotateRight(head *ListNode, k int) *ListNode {
	if head == nil {
		return head
	}
	lg := 1
	node := head
	for node.Next != nil {
		lg++
		node = node.Next
	}
    node.Next = head
    
	dummy := &ListNode{Val: 0}
	dummy.Next = head
    index := lg - (k % lg)
	newHead := &ListNode{Val: 0}
	for index > 0 {
		dummy = dummy.Next
		index--
	}
	newHead = dummy.Next
	dummy.Next = nil
	return newHead
}
发布了65 篇原创文章 · 获赞 0 · 访问量 369

猜你喜欢

转载自blog.csdn.net/weixin_44555304/article/details/104267251