*【python/Hard/25】Reverse Nodes in k-Group

题目

在这里插入图片描述

基本思路

先依次向后确定每个分组,对确定的分组用尾插法进行逆置,然后设置新的起点,重复上述过程即可

实现代码

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution:
    def reverseKGroup(self, head, k):
        """
        :type head: ListNode
        :type k: int
        :rtype: ListNode
        """
        pre = ListNode(-1)
        tail = pre
        
        q = head
        while q is not None:
            #向后查找k个节点
            n = k
            p = q
            while p is not None and n > 0:
                p = p.next
                n -= 1
                
            #如果在查找k个节点的过程中遇到None,则说明
            #后面的节点不够k个节点则直接跳出即可
            if n > 0:
                tail.next = q
                break
            
            #将这K个节点以头插法插入
            end = q
            while q != p:
                t = q.next
                q.next = tail.next
                tail.next = q
                q = t
            tail = end
        return pre.next
            
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值