首页 > 编程知识 正文

python单例模式,python数据结构和算法

时间:2023-05-05 06:39:16 阅读:33512 作者:148

主题给链表,每k个节点一组反转。 请返回反转的链表。

k是正整数,值小于或等于链表的长度。

如果节点总数不是k的整数倍,请使最后剩下的节点保持其原始顺序。

leet代码原题地址: https://leet代码- cn.com/problems/reverse-nodes-in-k-group /

测试用例的例子给出这个链表。 1-2-3-4-5

k=2时,应该返回: 2-1-4-3-5

k=3时,应该返回: 3-2-1-4-5

在代码实现中,可以将此问题划分为两个子问题,首先对链表进行分组,然后反转分组的子链表。 关于链表的反转,请参考我的这篇文章Python来实现反转链表

需要注意的是,反转子链表后,更新节点的方向。

class listnode 3360 def _ init _ (self,val,next=None ) :ifisinstance ) val, int ) :self.val=valself list ) : self.val=val [0] self.next=none head=selfforiinrange (1, len(val ) ) : node=listnode val [ I ] ) head.next=node head=head.nextclasssolution 3360 defreverselistnode (sead.nextclasssolution (3360 def reverse tail 3360 ) ad:链表的起始节点:param tail:链表的末尾节点:return:反转后的链表的起始节点和末尾节点' ' prev=tail.=tail : next=prev=current current=nextreturntail, headdefreversekgroup (k : int (-listnode : # 虚拟节点dummy_head=listnode(0) dummy _ head.next=head prev=dummy _ headwhilehead 33660 3360 tail=tail.nextifnotion 反转子链表head, tail=self.reverse listnode (tail (#更新节点的prev.next=head tail.next=next # )是后续子链表prev=tail head=tail 处理2]) list_node=listnode(l ) obj=Solution ) ) reve _ node=obj.reversekgroup (list _ node,2 ) while rekgroup

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。