/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode *rotateRight(ListNode *head, int k) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
ListNode *p = head;
ListNode *q = head;
ListNode *newHead = head;
int len = getLength(head);
k = len > 0 ? k % len : k;
if (head == NULL || head->next == NULL || k == 0)
{
return newHead;
}
while (k--)
{
p = p->next;
}
while (p->next != NULL)
{
p = p->next;
q = q->next;
}
newHead = q->next;
p->next = head;
q->next = NULL;
return newHead;
}
int getLength(ListNode *head)
{
int len = 0;
while (head != NULL)
{
head = head->next;
++len;
}
return len;
}
};
LeetCode-Rotate List
最新推荐文章于 2024-10-01 23:05:47 发布