1.题目
2.题目意思
题中给定一个整数k和一个链表,将链表每k个翻转一次,不足k个则不翻转
3.代码
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def reverseKGroup(self, head: ListNode, k: int) -> ListNode:
dummy = ListNode(0) # 链表头
p = dummy
while True:
count = k # 翻转k个
stack = [] # 栈
tmp = head # 链表
while count and tmp : # 按顺序压k个节点入栈
stack.append(tmp)
tmp = tmp.next
count -= 1
if count: # 如果count>0,说明没压k个,有多,说明到链表末尾了,这部分不翻转,加入到新链表后面就可以跳出循环了
p.next = head
break
while stack: # 压入了k个入栈,一个个弹出,加在新链表后面
p.next = stack.pop()
p = p.next
p.next = tmp # 把剩下的加入到新链表后面
head = tmp # 对剩下的做循环
return dummy.next
思路:栈~
冲冲冲~