您的位置:首页 > 其它

Rotate List

2015-01-16 22:40 197 查看
Given a list, rotate the list to the right by k places, where k is non-negative.

For example:
Given
1->2->3->4->5->NULL
and k =
2
,
return
4->5->1->2->3->NULL
.

注意下k>size的情况,即倒数的k%size个。

代码:

class Solution {
public:
int getLen(ListNode* head){
int res=0;
ListNode* p=head;
while(p!=NULL){
++res;
p=p->next;
}
return res;
}
ListNode *rotateRight(ListNode *head, int k) {
if(head==NULL||k==0) return head;
int size=getLen(head);
if(k>size) k=k%size;
if(k==size||k==0) return head;
int i=size-k;
int j=1;
ListNode* p=head;
while(j<i){
p=p->next;
++j;
}
ListNode* q=p->next;
ListNode* resHead=q;
p->next=NULL;
while(q->next!=NULL){
q=q->next;
}
q->next=head;
return resHead;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: