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

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.dtcms.com/a/215877.html

相关文章:

  • React JSX语法介绍(JS XML)(一种JS语法扩展,允许在JS代码中编写类似HTML的标记语言)Babel编译
  • Spring AI(一)
  • 两种调度Dify工作流的解决方案
  • UBUNTU20.04 配置以QT界面程序代替系统界面启动,以及如何在tty模式下以linuxfb形式启动
  • Java设计模式之代理模式详解
  • 大型三甲医院更换HIS系统全流程分析与经验考察(上)
  • 数据分析实战1(Excel制作报表)
  • Linux系统编程-DAY06
  • Opigno LMS 3.2.7 安装操作记录
  • pyspark实践
  • 火柴INIBOX专业矿机登场,碾压现有Initverse挖矿设备
  • YOLOv4:目标检测的新标杆
  • Pytest自动化测试框架搭建:Jenkins持续集成
  • AI学习搭档:开启终身学习新时代
  • torch cuda 版本安装
  • 【Java】DelayQueue
  • 5.27 day 30
  • 修改SpringBootApplication类的入参后,引用外部yml的启动命令要修改
  • Spring AI 本地Ollama
  • C++ 中的函数包装:std::bind()、std::function<>、函数指针与 Lambda
  • 一个开源的多播放源自动采集在线影视网站
  • 15.进程间通信(一)
  • c++复习_第一天(引用+小众考点)
  • 2025吉林CCPC 题解(前六题)
  • 【NLP基础知识系列课程-Tokenizer的前世今生第四课】生物信息中的 Tokenizer 策略:如何切开一段基因?
  • 【NLP基础知识系列课程-Tokenizer的前世今生第五课】从静态到可学:Tokenizer 的自适应演化之路
  • C/C++的OpenCV的锐化
  • ojs导入显示空白页错误信息
  • Ubuntu 下搭建ESP32 ESP-IDF开发环境,并在windows下用VSCode通过SSH登录Ubuntu开发ESP32应用
  • 【android bluetooth 协议分析 02】【bluetooth hal 层详解 6】【高通蓝牙hal主要流程介绍-下】