Rotate List
2015-10-16 20:15
295 查看
/** * 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) { if(k<=0||head==NULL||head->next==NULL) return head; ListNode prehead(0); prehead.next=head; ListNode *p=head,*pre; int length=0; while(p) { length++; pre=p; p=p->next; } k=k%length; k=length-k; while(--k) { head=head->next; } pre->next=prehead.next; prehead.next=head->next; head->next=NULL; return prehead.next; } };
下面是参考网上比较聪明的做法,利用环
/** * 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) { if(k<=0||head==NULL||head->next==NULL) return head; ListNode prehead(0); prehead.next=head; ListNode *p=head; int length=0; while(p->next) { length++; p=p->next; } length++; k=k%length; k=length-k; p->next=head; while(k--) { p=p->next; } prehead.next=p->next; p->next=NULL; return prehead.next; } };
相关文章推荐
- Cg multitexturing of Earth
- 词形还原(lemmatization)和词性辨别(PartOfSpeech)工具
- 使用Qt实现MDI风格的主窗体
- C++primer学习:拷贝控制(2)
- n皇后问题
- 学会建立高斯消元模板
- web print page 打印 分页 page-break-before
- Qt中文乱码问题(比较清楚,同一个二进制串被解释成不同的语言)
- Android监听键盘显示和隐藏
- POJ 3264 Balanced Lineup RMQ 线段树
- 关于position:absolute和float之脱离文档流
- 《大道至简》第三章读后感
- lintcode :数组剔除元素后的乘积
- HttpGet
- 功能测试之UFT工具的小应用
- IIS配置ipa下载设置
- +=与join的性能测试
- FOJ 10月赛题 FOJ2198~2204
- ISP、IAP、ICP烧写方式的区别
- nyoj 阶乘因式分解(二) 70 (数学)