leetcode-链表-旋转链表

33 阅读1分钟

给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k **个位置。

输入: head = [1,2,3,4,5], k = 2
输出: [4,5,1,2,3]

第一种解法

func rotateRight(head *ListNode, k int) *ListNode {
	if head == nil || k == 0 {
		return head
	}
	n, p := 1, head
	for p.Next != nil {
		p = p.Next
		n++
	}
	p.Next = head
	k %= n
	for i := 1; i <= n-k; i++ {
		p = p.Next
	}
	head, p.Next = p.Next, nil
	return head
}