Rotate List
2015-08-13 13:48
281 查看
Given a list, rotate the list to the right by k places, where k is non-negative.
For example:
Given
return
Solution:
For example:
Given
1->2->3->4->5->NULLand k =
2,
return
4->5->1->2->3->NULL.
Solution:
/** * 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(!head || !k) return head; ListNode *p = head, *q = head; int num = 0; while(q && k) { q = q->next; k--; num++; } k %= num; if(!q && !k) return head; if(!q) q = head; while(k--) q = q->next; while(q->next) { p = p->next; q = q->next; } ListNode* r = p->next; p->next = q->next; q->next = head; return r; } };
相关文章推荐
- 牛逼顿的一生
- [Java]Maven学习
- 连载13
- HEAP CORRUPTION DETECTED
- oracle创建表空间
- 【细说PHP学习】第十一章 字符串处理
- iOS App 研发的最后冲刺:内测与部署
- Tomcat启动45秒解决问题
- 高负载web框架(五)
- 使用druid连接池,配置sql防火墙发现的sql注入问题
- 设置应用程序的图标(Setting the Application Icon)— Mac OS X
- Linux chmod +755和chmod +777 各是什么意思呢?
- hdu1250
- 设计模式:13 建造者模式
- Mysql 查看连接数,状态
- 深入理解Tagged Pointer
- 更新日志 - fir.im 新版管理后台邀请内测
- include 与 Widget
- PAT 1026. Table Tennis (30)
- Pool in minecraft