当前位置: 首页 > ai >正文

Leetcode 25. K 个一组翻转链表

1.题目基本信息

1.1.题目描述

给你链表的头节点 head ,每 k 个节点一组进行翻转,请你返回修改后的链表。

k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。

你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。

1.2.题目地址

https://leetcode.cn/problems/reverse-nodes-in-k-group/description/

2.解题方法

2.1.解题思路

链表反转

2.2.解题步骤

第一步,构建维护变量。dumbNode为哑结点;tail维护新链表的尾部结点;node1和node2维护分段链表的首尾结点(node2可能为None)

第二步,移动结点node1和node2,分段进行翻转,并将翻转后的链表链接到tail上

第三步,返回新链表

3.解题代码

python代码

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next# 链表反转函数。
def reverseList(head:ListNode, tail:ListNode) -> (ListNode, ListNode):pre = Nonenode = headwhile node != tail:temp = node.nextnode.next = prepre = nodenode = tempreturn pre, headclass Solution:def reverseKGroup(self, head: Optional[ListNode], k: int) -> Optional[ListNode]:# 第一步,构建维护变量。dumbNode为哑结点;tail维护新链表的尾部结点;node1和node2维护分段链表的首尾结点(node2可能为None)dumbNode = ListNode()tail = dumbNodenode1, node2 = head, head# 第二步,移动结点node1和node2,分段进行翻转,并将翻转后的链表链接到tail上while node2 is not None:for i in range(k):node2 = node2.nextif node2 is None and i != k - 1:tail.next = node1return dumbNode.nextnewHead, newTail = reverseList(node1, node2)tail.next = newHeadtail = newTailnode1 = node2# 第三步,返回新链表return dumbNode.next

4.执行结果

http://www.xdnf.cn/news/9319.html

相关文章:

  • 在 springboot3.x 使用 knife4j 以及常见报错汇总
  • 力扣面试150题--完全二叉树的节点个数
  • 当UI设计师遇上数字孪生:如何用设计思维重构工业流程?
  • 1998-2023年各地级市国内生产总值、地级市GDP数据(市辖区)
  • 依赖注入(DI)/控制反转(IoC) nodejs案例详解
  • 「提效」AI办公 | 实测,飞书扣子空间快速迭代
  • 网络常识:网线和光纤的区别
  • SD卡+FATFS+Tinyjpeg图片解码显示 (STM32F103VET6通过CubeMX快速建立工程)
  • NAT的映射类型详解:从基础到高级应用
  • 上海市计算机学会竞赛平台2025年5月月赛丙组稳定区间
  • 计算机视觉---YOLOv3
  • 5.0.7 TabControl的使用
  • 如何创建一个流程图/思维导图
  • 3分钟学会跨浏览器富文本编辑器开发:精准光标定位+内容插入(附完整代码)
  • MATLAB使用多个扇形颜色变化表示空间一个点的多种数值
  • STM32CubeMX,arm-none-eabi-gcc简单试用
  • MybatisPlus - Interceptor(拦截器)的功能点
  • AWS创建github相关的角色
  • Debian 系统 Python 开发全解析:从环境搭建到项目实战
  • Conda:环境移植及更新1--使用conda-pack
  • 永磁同步电机控制算法--基于电磁转矩反馈补偿的新型IP调节器
  • OpenCv高阶(十八)——dlib人脸检测与识别
  • Java设计模式之职责链模式详解
  • Sql Server TLSv1 协议问题
  • 机器学习算法-决策树
  • 【CSS】CSS 和 SASS 的区别
  • 【排序算法】快速排序详解--附详细流程代码
  • 鸿蒙 Form Kit(卡片开发服务)
  • 【AI论文】使用检索和代码工具将LLM Agent提取为小型模型
  • python打卡day38@浙大疏锦行