这题可以用之前的牛客网链表MB2的翻转方法,加一个头节点,算出翻转区间一共有多少个,然后一个一个翻转。
不过这题也可以写的更加简洁,重复的 *** 作可以用递归实现:
/**
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
class Solution {
public:
/**
*
* @param head ListNode类
* @param k int整型
* @return ListNode类
*/
ListNode* reverseKGroup(ListNode* head, int k) {
// write code here
ListNode* tail=head;
//找到本次反转的链表尾部
for(int i=0;inext;
}
ListNode* pre=NULL;
ListNode* p=head;
while(p!=tail){
ListNode* pNext=p->next;
p->next=pre;
pre=p;
p=pNext;
}
head->next=reverseKGroup(tail, k);
return pre;
}
};
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)