/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
int calLength(ListNode* head)
{
int len = 0;
while (head)
{
++len;
head = head->next;
}
return len;
}
ListNode *rotateRight(ListNode *head, int k) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
if (head == NULL) return NULL;
int len = calLength(head);
k = k % len;
if (k == 0) return head;
ListNode* pre = NULL;
ListNode* p = head;
for (int i = 0; i < len - k; ++i)
{
pre = p;
p = p->next;
}
ListNode* q = p;
while (q->next)
q = q->next;
if (pre)
pre->next = NULL;
q->next = head;
return p;
}
};[Leetcode] Rotate List
最新推荐文章于 2019-05-16 11:19:14 发布
本文介绍了一种实现单链表右旋转的方法。通过计算链表长度,并利用节点指针进行操作,实现链表的旋转。文章包含完整的C++代码实现。
1192

被折叠的 条评论
为什么被折叠?



