Leetcode61.旋转链表

与数组旋转那题不同,链表旋转可以更简单地实现。

ListNode* rotateRight(ListNode* head, int k)
{
	if (head == nullptr || head->next == nullptr || k == 0)
		return head;
	int len = 0;
	ListNode* p = head, *temp = nullptr;
	while (p)
	{
		len++;
		p = p->next;
	}
	k %= len;
	if (k == 0)
		return head;
	k = len - k;
	p = head;
	while (k--)
	{
		if (k == 0)
			temp = p;
		p = p->next;
		if (k == 0)
			temp->next = nullptr;
	}
	ListNode* res = p;
	while (p->next)
		p = p->next;
	p->next = head;
	return res;
}

猜你喜欢

转载自blog.csdn.net/hlk09/article/details/81181793