题解 | #每K个一组反转链表#

每K个一组反转链表

https://www.nowcoder.com/practice/a632ec91a4524773b8af8694a51109e7

import sys


class ListNode:
    def __init__(self,value=0,next=None):
        self.value=value
        self.next=next

def parse_input(num):
    if not num:
        return None
    head=ListNode(num[0])
    curr=head

    for value in num[1:]:
        curr.next=ListNode(value)
        curr=curr.next
    return head

def reverse(head,k):
    pre,cur,cnt,tail=None,head,0,head
    while cur and cnt<k:
        cnt+=1
        tmp=cur.next
        cur.next=pre
        pre=cur
        cur=tmp
    return pre,cur,cnt

def reverse_k(head,k):
    if not head:
        return head
    tail=head
    head,next_head,cnt=reverse(head,k)
    if cnt==k:
        next_head=reverse_k(next_head,k)
        tail.next=next_head
    else:
        head,_,_=reverse(head,k)
    return head


num=list(map(int,input().strip().split()))
k=int(input())

head=parse_input(num)
head=reverse_k(head,k)
while head:
    print(head.value,end=' ')
    head=head.next










全部评论

相关推荐

2024-12-08 18:59
东北大学 Java
Java抽象带篮子:外卖项目可以看看我的详细的外卖话术,里面还写了怎么描述项目,还为了提高含金量额外增加了很多技术亮点呢。另外我这边还有个7000多字的轮子项目话术,可以狠狠的速成,需要的似我
点赞 评论 收藏
分享
2024-12-29 19:48
河北科技大学 Java
雀青:不如考公,没交过社保还算应届生,真想走技术不如考研重开。
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务