链表_leetcode25

此博客为转载内容,原文链接为https://www.cnblogs.com/lux-ace/p/10557132.html ,涉及数据结构与算法领域。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

class Solution(object):
def reverseKGroup(self, head, k):
"""
:type head: ListNode
:type k: int
:rtype: ListNode
"""

dummyHead = ListNode(0)

dummyHead.next = head

pre = dummyHead
fNode = head

kNode = self.hasKNode(fNode,k)


# self.reverseKList(pre,fNode,kNode,k)
#
#
# self.printList(dummyHead.next)

# pre = fNode
# fNode = pre.next
# kNode = self.hasKNode(fNode,k)
#
# print kNode.val
#
# self.reverseKList(pre, fNode, kNode, k)
# self.printList(dummyHead.next)

while kNode:

self.reverseKList(pre,fNode,kNode,k)
pre = fNode
fNode = pre.next
kNode = self.hasKNode(fNode,k)



return dummyHead.next


def hasKNode(self,head,k):

count = 1
cur = head

while cur and count < k:
cur = cur.next
count += 1

if cur:
return cur
else :
return None

def reverseKList(self,pre,fNode,Knode,k):

curNode = fNode.next
nextKnode = Knode.next
fNode.next = nextKnode

# while curNode != nextKnode:
# curNode.next = pre.next
# pre.next = curNode
# curNode = curNode.next

for i in range(k-1):
nextCur = curNode.next
curNode.next = pre.next
pre.next = curNode
curNode = nextCur



def creatList(self,l):
dummyHead = ListNode(0)

pre = dummyHead

for i in l:
pre.next = ListNode(i)
pre = pre.next

return dummyHead.next


def printList(self,head):
cur = head

while cur:
print cur.val
cur = cur.next



l1 = [1,2,3,4,5]

s = Solution()

head = s.creatList(l1)

s.printList(head)

head = s.reverseKGroup(head,3)
#
s.printList(head)


转载于:https://www.cnblogs.com/lux-ace/p/10557132.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值