Reverse Nodes in k-Group
2015-07-14 20:31
423 查看
翻转节点
Given a linked list, reverse the nodes of a linked list k at a time and return its modified list.
If the number of nodes is not a multiple of k then left-out nodes in the end should remain as it is.
You may not alter the values in the nodes, only nodes itself may be changed.
Only constant memory is allowed.
For example,
Given this linked list:
For k = 2, you should return:
For k = 3, you should return:
解:
Given a linked list, reverse the nodes of a linked list k at a time and return its modified list.
If the number of nodes is not a multiple of k then left-out nodes in the end should remain as it is.
You may not alter the values in the nodes, only nodes itself may be changed.
Only constant memory is allowed.
For example,
Given this linked list:
1->2->3->4->5
For k = 2, you should return:
2->1->4->3->5
For k = 3, you should return:
3->2->1->4->5
解:
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode* reverseKGroup(ListNode* head, int k) { if(head==NULL || k<=1) return head; ListNode * myHead=new ListNode(0);//重点:新增一个节点,方便操作 myHead->next=head; ListNode *priv=myHead, *cur, *tmp, *curNext, *curPriv, *curTail; int count=0; while(head){ count++; if(count==k){ cur=priv->next->next;//记录当前节点 curPriv=priv->next;//记录当前节点的上一个节点 curTail=priv->next;//记录本趟翻转的最后一个节点 curNext=head->next;//记录下一个节点 while(cur!=curNext){ tmp=cur->next; cur->next=curPriv; curPriv=cur; cur=tmp; } priv->next=curPriv; priv=curTail; priv->next=curNext; count=0; head=curNext; continue; } head=head->next; } head=myHead->next; return head; } };
相关文章推荐
- SQL Server中通过reverse取某个最后一次出现的符号后面的内容(字符串反转)
- javascript 数组排序函数sort和reverse使用介绍
- Javascript数组的排序 sort()方法和reverse()方法
- 在JavaScript中处理数组之reverse()方法的使用
- Javascript中数组sort和reverse用法分析
- js中reverse函数的用法详解
- Windows下通过Putty和行程主机建立反向通道
- oracle reverse 反转函数
- Lungo transition in reverse direction. 反转效果
- Reverse Words in a String
- 字符反转
- 黑马程序员_StringBuffer类的简介
- IDF 逆向题 python ByteCode
- 单向链表的逆置
- Reverse Integer
- [leetoce 143 链表]Reorder List
- Rotate List
- Reverse routing
- reverse list
- 十进制转化为二进制