【leetcode】-25. Reverse Nodes in k-Group 反转k组数组
程序员文章站
2022-04-19 12:29:57
Reverse Nodes in k-Group题目递归python 代码题目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 m...
题目
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 the end should remain as it is.
Example:
Given this linked list: 1->2->3->4->5
For k = 2, you should return: 2->1->4->3->5
For k = 3, you should return: 3->2->1->4->5
Note:
Only constant extra memory is allowed.
You may not alter the values in the list’s nodes, only nodes itself may be changed.
递归
题目要求将小于链表长度的k个链表进行反转,不足k个的链表顺序不变。这题乍看起来很复杂,其实可以先翻转第一组k个链表,然后将剩余的部分看作一个新的链表进行递归计算。
python 代码
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def reverseKGroup(self, head: ListNode, k: int) -> ListNode:
if not head:
return None
a = b = head
for i in range(k):
if not b:
return head
b = b.next
newHead = self.reverse(a,b)
a.next = self.reverseKGroup(b,k)
return newHead
def reverse(self,a,b):
pre = None
cur = a
nxt = a
while cur != b:
nxt = cur.next
cur.next = pre
pre = cur
cur = nxt
return pre
本文地址:https://blog.csdn.net/weixin_44110891/article/details/107159059
推荐阅读
-
【leetcode】-25. Reverse Nodes in k-Group 反转k组数组
-
【LeetCode】Reverse Nodes in k-Group(k个一组翻转链表)
-
【leetcode】-25. Reverse Nodes in k-Group 反转k组数组
-
【LeetCode】Reverse Nodes in k-Group(k个一组翻转链表)
-
[LeetCode]Reverse Nodes in k-Group
-
【LeetCode】- Reverse Nodes in k-Group
-
Reverse Nodes in k-Group -- LeetCode
-
LeetCode Reverse Nodes in k-Group
-
[leetcode]Reverse Nodes in k-Group
-
leetcode:Reverse Nodes in k-Group