class ListNode:
def __init__(self, x):
self.val = x
self.next = None
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param head ListNode类
# @param k int整型
# @return ListNode类
#
class Solution:
def reverseKGroup(self , head: ListNode, k: int) -> ListNode:
# write code here
if head == None or k == 1 or head.next == None:
return head
cur_node = head
size = 0
while cur_node != None:
size += 1
cur_node = cur_node.next
j = size - size % k # 先计算要反转的个数
res = ListNode(-1)
res.next = head
cur_node, i = res, 0
while cur_node != None:
if i == 0:
anchor_node = cur_node
cur_node = cur_node.next
i += 1
continue
if i > j: # 超过反转个数就停止循环
break
if i % k == 0: # 第k个点
end_node.next = cur_node.next
cur_node.next = anchor_node.next
anchor_node.next = cur_node
cur_node = end_node.next
anchor_node = end_node # 完成一组反转,更新anchor_node
elif i % k == 1: # 第1个点不动
end_node = cur_node
cur_node = cur_node.next
elif 1 < i % k < k: # 1到k之间的点插到链表段前面
end_node.next = cur_node.next
cur_node.next = anchor_node.next
anchor_node.next = cur_node
cur_node = end_node.next
i += 1
return res.next
Python刷题合集-算法编程题.zip
需积分: 5 159 浏览量
2023-11-13
10:19:22
上传
评论 1
收藏 4KB ZIP 举报
一键难忘
- 粉丝: 6w+
- 资源: 150
最新资源
- JavaScript《基于自动分析数据并给出营业建议的餐厅管理系统(接入AI) 》+源代码+项目说明及资料
- 355670834783295707ad04e-427f-4cde-9589-e578224a8459.zip
- 动态sql解析引擎,类似mybatis动态sql的功能
- EDA365-Skill-V2.5安装包,支持Allegro17.x版本
- C# 常用单词汇总,常用单词汇总
- 【ERP标准流程-标准流程-库内业务管理】(DOC 14页).doc
- Python《数据库期末作业-餐厅点单系统 》+源代码+设计资料
- 学生成绩管理系统(C++课程设计
- 双指针法判断链表有环-go语言实现
- MyBatis动态SQL是一种强大的特性,它允许我们在SQL语句中根据条件动态地添加或删除某些部分,从而实现更加灵活和高效的数据
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈