LeetCode——25.K 个一组翻转链表(困难)
Posted nirvana · rebirth
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode——25.K 个一组翻转链表(困难)相关的知识,希望对你有一定的参考价值。
题解
- 搞个头节点,直接每k个翻转即可
AC-Code
/**
* Definition for singly-linked list.
* struct ListNode
* int val;
* ListNode *next;
* ListNode() : val(0), next(nullptr)
* ListNode(int x) : val(x), next(nullptr)
* ListNode(int x, ListNode *next) : val(x), next(next)
* ;
*/
class Solution
public:
pair<ListNode*, ListNode*> reverseG(ListNode* head, ListNode* tail)
ListNode* pre = tail->next; // 翻转之后末尾连接完成,只有头部没有连接
ListNode* p = head;
while(pre != tail)
ListNode* nex = p->next;
p->next = pre;
pre = p;
p = nex;
return tail, head;
ListNode* reverseKGroup(ListNode* head, int k)
ListNode* hair = new ListNode(0, head);
ListNode* pre = hair;
while(head)
ListNode* tail = head;
for(int i = 0; i < k - 1 ; ++i)
tail = tail->next;
if(!tail)
return hair->next;
// ListNode* nex = tail->next;
tie(head, tail) = reverseG(head, tail);
pre->next = head;
// tail->next = nex; // reverseG已经连接了尾部
pre = tail;
head = tail->next;
ListNode* ans = hair->next;
delete hair; // hair是new出来的,理应释放
return ans;
;
以上是关于LeetCode——25.K 个一组翻转链表(困难)的主要内容,如果未能解决你的问题,请参考以下文章
leetcode25. K 个一组翻转链表---python
leetcode25. K 个一组翻转链表---python
leetcode25. K 个一组翻转链表---python