标签:http 处理 mamicode 长度 防止 head 判断 png tno
链表中的点已经相连,一次旋转操作意味着:
class Solution{ public: ListNode* rotateRight(ListNode* head,int k) { //判断是否为空或者是不是只有一个结点 if(head==NULL || head->next==NULL) return head; ListNode* oldTail=head; int n;//链表长度啊 for(n=1;oldTail!=NULL;n++) oldTail=oldTail->next; oldTail->next=head; //寻找新的头结点啦 ListNode* new_tail=head; k=k%n;//防止循环性移动哈 for(int i=0;i<n-k-1;i++) new_tail=new_tail->next; ListNode* newHead=new_tail->next; new_tail->next=NULL; return head; } };
复杂度分析
自己实现的,只不过没考虑到环,但是也差不多这个意思吧
class Solution{ public: ListNode* rotateRight(ListNode* head,int k) { //特殊情况1 if(head==NULL || head->next==NULL) return head; ListNode* p=head; ListNode* pre=NULL; ListNode* lastNode=NULL; int count_num=0; //统计总数 while(p!=NULL) { count_num++; lastNode=p; p=p->next; } //做处理,防止周期性移动 k=k%count_num; //特殊情况2 if(k==0) return head; //p归位 p=head; for(int i=0;i<count_num-k;i++) { pre=p; p=p->next; } pre->next=NULL; lastNode->next=head; head=lastNode; return head; } };
我这样写就多了个k=0的情况的分析,而形成环之后就不用考虑这个特殊情况,因为永远没有哪个结点的下一个结点是NULL
标签:http 处理 mamicode 长度 防止 head 判断 png tno
原文地址:https://www.cnblogs.com/renzmin/p/11884523.html