[LeetCode] 025. Reverse Nodes in k-Group (Hard) (C++/Java),有需要的朋友可以参考下。
索引:
Github:025. Reverse Nodes in k-Group (Hard) 链接:
题目:
代码(github): 题意:把一个链表每 k 个分为一组,每组内进行翻转。
只能用常数级的空间。 分析:这题比较考验链表的操作,用递归做会比较方便,先找到下一组的节点,把本组反转后再递归处理后面的节点。
代码:C++:
class Solution {public: ListNode *reverseKGroup(ListNode *head, int k) { if (!head || !(head->next) || k < 2) return head; // count k nodes ListNode *nextgp = head; for (int i = 0; i < k; i++) if (nextgp) nextgp = nextgp->next; else return head; // reverse ListNode *prev = NULL, *cur = head, *next = NULL; while (cur != nextgp) { next = cur->next; if (prev) cur->next = prev; else cur->next = reverseKGroup(nextgp, k); prev = cur; cur = next; } return prev; }};