[LeetCode] 025. Reverse Nodes in k

索引:[LeetCode] Leetcode 题解索引 (C++/Java/Python/Sql)Github: https://github.com/illuz/leetcode

025. Reverse Nodes in k-Group (Hard)链接:

题目:https://oj.leetcode.com/problems/reverse-nodes-in-k-group/代码(github):https://github.com/illuz/leetcode

题意:

把一个链表每 k 个分为一组,每组内进行翻转。只能用常数级的空间。

分析:

这题比较考验链表的操作,,用递归做会比较方便,先找到下一组的节点,把本组反转后再递归处理后面的节点。

代码:

C++:

class Solution {public:ListNode *reverseKGroup(ListNode *head, int k) {if (!head || !(head->next) || k < 2)return head;// count k nodesListNode *nextgp = head;for (int i = 0; i < k; i++)if (nextgp)nextgp = nextgp->next;elsereturn head;// reverseListNode *prev = NULL, *cur = head, *next = NULL;while (cur != nextgp) {next = cur->next;if (prev)cur->next = prev;elsecur->next = reverseKGroup(nextgp, k);prev = cur;cur = next;}return prev;}};

Java:

public class Solution {public ListNode reverseKGroup(ListNode head, int k) {ListNode cur = head;int cnt = 0;// get next groupwhile (cur != null && cnt != k) {cur = cur.next;cnt++;}if (cnt == k) {cur = reverseKGroup(cur, k);// reversewhile (0 <= –cnt) {ListNode tmp = head.next;head.next = cur;cur = head;head = tmp;}head = cur;}return head;}}

生活会变成什么样子?正因为时光流逝一去不复返,

[LeetCode] 025. Reverse Nodes in k

相关文章:

你感兴趣的文章:

标签云: