用python语言解答LeetCode的25题
碎碎念(不用看!下一节开始才是重点~~~)
这道题和24题的思想应该是类似的,或者说,24题是25题的一个特殊类型,24题固定k=2,而25题,k则是随机的
方法一:使用栈
我要开始兔系刷题法了,后期会回过头来不断改进,感觉这样会快一些,刷题更有成就感
方法一的代码:
#coding:utf-8
class ListNode:
def __init__(self, x):
self.val = x
self.next = None
class Solution:
def reverseKGroups(self, head, k):
dummy = ListNode(0)
p = dummy
while True:
count = k
stack = []
tmp = head
while tmp and count:
stack.append(tmp)
tmp = tmp.next
count -= 1
# 注意,目前tmp所在k+1位置
# 说明剩下的链表不够k个,跳出循环
if count:
p.next = head
break
# 翻转操作
while stack:
p.next = stack.pop()
p = p.next
# 与剩下的链表连接起来
p.next = tmp
head = tmp
return dummy.next
方法一的运行结果: