LeetCode 61. Rotate List
来源:互联网 发布:js encode 编辑:程序博客网 时间:2024/06/06 11:40
题目:
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次,要注意的就是k如果很大,只要先将k对链表长度len取余,减小时间复杂度。
如果head为NULL,直接返回NULL。记len初始为1,设置双指针pre、end,都初始化为head。借用end来计算len,如果end的next不为NULL ,len加1,end指向下一个。如果k比链表的长度大,则取余,end再赋值为head,使得pre和end包含k+1个节点。如果end的下一个如果不是NULL,pre和end都后移。最后将end的next接到原来的head,因为pre和end包含k+1个节点,新的head就为pre的下一个节点,pre的下一个此时就是链表尾部,为NULL。
代码:
/** * 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==NULL){//如果head为NULL,直接返回NULL return NULL; } int len=1;//记len为1 ListNode *pre=head;//设置双指针 ListNode *end=head; while(end->next){//借用end来计算len,如果end的next不为NULL ++len;//len加1 end=end->next;//end指向下一个 } k%=len;//如果k比链表的长度大,则取余 end=head;//end再赋值为head while(k){//使得pre和end包含k+1个节点 end=end->next; --k; } while(end->next!=NULL){//end的下一个如果不是NULL pre=pre->next;//pre和end都后移 end=end->next; } end->next=head;//将end的next接到原来的head head=pre->next;//因为pre和end包含k+1个节点,新的head就为pre的下一个节点 pre->next=NULL;//pre的下一个此时就是链表尾部,为NULL return head; }};
**输出结果:**12ms
0 0
- [LeetCode]61.Rotate List
- LeetCode --- 61. Rotate List
- [Leetcode] 61. Rotate List
- [leetcode] 61.Rotate List
- [leetcode] 61. Rotate List
- leetcode 61. Rotate List
- LeetCode 61. Rotate List
- [leetcode] 61. Rotate List
- 61. Rotate List LeetCode
- leetcode 61. Rotate List
- LeetCode 61. Rotate List
- leetcode 61. Rotate List
- [LeetCode]61. Rotate List
- LeetCode 61. Rotate List
- LeetCode *** 61. Rotate List
- LeetCode 61. Rotate List
- [Leetcode]61. Rotate List
- LeetCode - 61. Rotate List
- python和lua的socket实例
- android 瀑布流布局 + 自由拖拽
- 利用AXIS2返回JSON
- 1011. A+B和C (15)
- 程序员的思考
- LeetCode 61. Rotate List
- 字符集与编码二之编号 vs 编码
- reactNative react.children.only expected to receive a single react element child.问题
- OpenGLES的简单应用绘图,以及照相机画面变色变形渲染(六)
- centos7中安装redis
- bzoj 4006: [JLOI2015]管道连接 斯坦纳树
- 字符串扩展
- 安安日志app-技术支持
- Softwarenetz.LogBook.v1.20.Multilingual.