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

python-leetcode-反转链表 II

92. 反转链表 II - 力扣(LeetCode)

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def reverseBetween(self, head: Optional[ListNode], left: int, right: int) -> Optional[ListNode]:
        # 如果链表为空,或者不需要反转,直接返回
        if not head or left == right:
            return head

        # 创建虚拟头节点,以简化操作(处理 left 为 1 的情况)
        dummy = ListNode(0)
        dummy.next = head
        prev = dummy

        # 1. 找到 left 节点的前一个节点
        for _ in range(left - 1):
            prev = prev.next

        # 2. 开始反转
        curr = prev.next  # left 节点
        next_node = None  # 用于存储临时的下一个节点
        for _ in range(right - left + 1):
            next_temp = curr.next
            curr.next = next_node
            next_node = curr
            curr = next_temp

        # 3. 连接反转后的部分
        prev.next.next = curr  # 连接到 right 节点后的部分
        prev.next = next_node  # 连接反转部分的头节点

        return dummy.next


http://www.kler.cn/a/525116.html

相关文章:

  • Linux环境基础开发工具的使用(apt, vim, gcc, g++, gbd, make/Makefile)
  • java求职学习day18
  • 图漾相机——C++语言属性设置
  • 危机13小时:追踪一场GitHub投毒事件
  • C语言自定义数据类型详解(二)——结构体类型(下)
  • 02.05、链表求和
  • vulfocus/thinkphp:6.0.12 命令执行
  • go-zero学习笔记(二)
  • Pyside的QWebEngineProfile类
  • OpenLayers知识总结1
  • 在Putty创建php文件
  • 安卓通过网络获取位置的方法
  • 透视B/S架构与C/S架构:构建未来网络应用的智慧选择
  • C27.【C++ Cont】时间、空间限制和STL库的简单了解
  • 跨境电商代购系统独立站深度分享
  • 【信息系统项目管理师-选择真题】2006下半年综合知识答案和详解
  • TVS选型设计
  • Android车机DIY开发之学习篇(六)编译讯为3568开发板安卓
  • 【Rust自学】17.1. Rust的面向对象的编程特性
  • EtherCAT主站IGH-- 20 -- IGH之fsm_pdo_entry.h/c文件解析
  • 【重生之我在学习C语言编译与链接详解】
  • ue5笔记(2)
  • OSCP:发送钓鱼电子邮件执行客户端攻击
  • Java面试题2025-并发编程进阶(线程池和并发容器类)
  • DeepSeek:硅谷AI格局的拐点?
  • 基于STM32的自主行驶无人小车教学