leetcode 之Reverse Nodes in k-Group(22)

这题有点繁琐,在更新指针时很容易出错。

ListNode *reverseKGroup(ListNode *head, int k)
      {
          if (head == nullptr || head->next == nullptr || k < 2)return head;

          ListNode dummy(-1);
          dummy.next = head;

          for (ListNode *prev = &dummy, *end = head; end; end = prev->next)
          {
              for (int i = 1; i < k; i++)
                  end = end->next;
              if (end == nullptr)break;

              prev = reverse(prev, prev->next, end);

          }

          return dummy.next;
      }

      ListNode *reverse(ListNode *prev, ListNode *begin, ListNode *end)
      {
          ListNode *end_next = end->next;
          for (ListNode *p = begin, *cur = p->next, *pnext = cur->next; cur != end_next;
              p = cur, cur = pnext, pnext =cur? pnext->next:nullptr)
          {
              cur->next = p;//注意指针的指向是一个一个的改变的
          }
          begin->next = end_next;
          prev->next = end;
          return begin;
      }

时间: 2024-08-01 10:46:38

leetcode 之Reverse Nodes in k-Group(22)的相关文章

(Java) LeetCode 25. Reverse Nodes in k-Group —— k个一组翻转链表

Given a linked list, reverse the nodes of a linked list k at a time and return its modified list. k is a positive integer and is less than or equal to the length of the linked list. If the number of nodes is not a multiple of k then left-out nodes in

[LeetCode] 025. Reverse Nodes in k-Group (Hard) (C++/Java)

索引:[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 题意: 把一个链表每

[LeetCode 题解]: Reverse Nodes in K-Groups

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 nod

LeetCode:Reverse Nodes in k-Group

1.题目名称 Reverse Nodes in k-Group(分组翻转链表) 2.题目地址 https://leetcode.com/problems/reverse-nodes-in-k-group 3.题目内容 英文: 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 multipl

【leetcode】reverse Nodes in k-groups

问题: 给定一个链表的头指针,以及一个整数k,要求将链表按每k个为一组,组内进行链表逆置.少于k个的部分不做处理. 分析: 个人觉得问题的重点是熟悉链表的就地逆置操作,就是头插法.其他的考察点如果还有的话,就的细心程度. 实现: void reverseList(ListNode *&pre, ListNode *head) { ListNode *tail = NULL; while (head) { ListNode* next = head->next; head->next =

[LeetCode] 25. Reverse Nodes in k-Group 每k个一组翻转链表

Given a linked list, reverse the nodes of a linked list k at a time and return its modified list. k is a positive integer and is less than or equal to the length of the linked list. If the number of nodes is not a multiple of k then left-out nodes in

leetCode 25.Reverse Nodes in k-Group (以k个节点为一组反转链表) 解题思路和方法

Reverse Nodes in k-Group 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 valu

[LeetCode][JavaScript]Reverse Nodes in k-Group

Reverse Nodes in k-Group 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 valu

【leetcode】Reverse Nodes in k-Group

Reverse Nodes in k-Group 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 valu