92. 反转链表 II

news2024/11/28 0:58:08

92. 反转链表 II

  • 题目-中等难度
  • 示例
  • 1. 获取头 + 反转中间 + 获取尾 -> 拼接
  • 2. 链表转换列表 -> 计算 -> 转换回链表

题目-中等难度

给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。

示例

示例 1:
在这里插入图片描述

输入:head = [1,2,3,4,5], left = 2, right = 4
输出:[1,4,3,2,5]

示例 2:

输入:head = [5], left = 1, right = 1
输出:[5]

提示:

  • 链表中节点数目为 n
  • 1 <= n <= 500
  • -500 <= Node.val <= 500
  • 1 <= left <= right <= n

进阶:

你可以使用一趟扫描完成反转吗?

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/summary-ranges
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

1. 获取头 + 反转中间 + 获取尾 -> 拼接

时间
20ms
击败 51.30%使用 Python 的用户
内存
12.76mb
击败 88.77%使用 Python 的用户

# Definition for singly-linked list.
# class ListNode(object):
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution(object):
    def reverseBetween(self, head, left, right):
        """
        :type head: ListNode
        :type left: int
        :type right: int
        :rtype: ListNode
        """
        i = 1
        # 获取前端res, 以及反转链表的开头
        res = ListNode(-1)
        p = res
        while i < left and head:
            p.next = ListNode(head.val)
            i+=1
            p = p.next
            head = head.next
        # 获取res最后一个节点位置,在这个位置添加后续链表
        r = res
        while r.next:
            r = r.next
            
        # 反转指定位置链表
        n = 0
        prev = None
        cur = head
        while n <= (right-left) and cur:
            nn = cur.next
            cur.next = prev
            prev = cur
            cur = nn
            n+=1
        # 获取prev最后一个节点位置,在这个位置添加后续链表
        c = prev
        while c.next:
            c = c.next
        # 添加后端
        c.next= cur
        # 拼接整体
        r.next = prev
        return res.next

2. 链表转换列表 -> 计算 -> 转换回链表

时间
16ms
击败 78.41%使用 Python 的用户
内存
12.94mb
击败 49.05%使用 Python 的用户

# Definition for singly-linked list.
# class ListNode(object):
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution(object):
    def reverseBetween(self, head, left, right):
        """
        :type head: ListNode
        :type left: int
        :type right: int
        :rtype: ListNode
        """
        # 链表转列表
        li = []
        while head:
            li.append(head.val)
            head = head.next
        # 列表反转
        li[left-1:right] = li[left-1:right][::-1]
        # 尾插法列表转链表
        nh = ListNode(li[0])
        p = nh
        for i in range(1,len(li)):
            p.next = ListNode(li[i])
            p = p.next
        return nh

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/866895.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

生信豆芽菜-山峦图分析使用说明

网站&#xff1a;http://www.sxdyc.com/visualsRidges 一、山峦图简介 山峦图&#xff08;Ridgeline plots&#xff09;&#xff0c;本质上是多个核密度曲线图的相互重叠组合&#xff0c;也可以看作是只有半个“小提琴”的横向小提琴图&#xff0c;主要用于展示和比较数据&…

Typecho建站:腾讯云轻量应用服务器搭建网站博客方法

腾讯云轻量应用服务器自带Typecho应用模板镜像&#xff0c;腾讯云提供的Typecho模板镜像是基于CentOS 7.6 64位操作系统&#xff0c;并已预置Nginx、PHP、MariaDB软件程序&#xff0c;使用Typecho应用模板可以快速搭建博客、企业官网、电商及论坛等各类网站。腾讯云服务器网分享…

爱立信网管工具使用-Tools for Export Import(TEI)

1、TEI使用 2、数据导出 打开 OSS Common Explorer&#xff0c;如下图&#xff0c;右键“ONRM_ROOT_MO_R”,选择“Export” MO type filter:为了避免生产的 BULK CM export 文件太大&#xff08;可能会达到几个 G&#xff0c;TEI 转换时&#xff0c;对输入的 BULK CM expor…

多线程与并发编程面试题总结

多线程与并发编程 多线程 线程和进程的区别&#xff1f; 从操作系统层面上来讲&#xff1a;进程(process)在计算机里有单独的地址空间&#xff0c;而线程只有单独的堆栈和局部内存空间&#xff0c;线程之间是共享地址空间的&#xff0c;正是由于这个特性&#xff0c;对于同…

使用Python和pymupdf创建简单的PDF阅读器

使用Python和wxPython编写一个简单的PDF阅读器&#xff0c;并展示了PDF文件的内容。 介绍&#xff1a; 在日常工作和学习中&#xff0c;我们经常需要查看和阅读PDF文件。本文将介绍如何使用Python编程语言和wxPython库创建一个简单的PDF阅读器&#xff0c;让我们能够打开文件夹…

【雕爷学编程】Arduino动手做(54)---大按键微动按钮模块3

37款传感器与模块的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&#x…

C语言 金币问题

目录 一、题目介绍 二、题目要求 三、解题思路 四、代码演示 一、题目介绍 国王将金币作为工资&#xff0c;发放给忠诚的骑士。 第一天&#xff0c;骑士收到一枚金币&#xff1b;之后两天&#xff08;第二天和第三天&#xff09;&#xff0c;每天收到两枚金币&#xff1b;…

Docker安装 elasticsearch-head

目录 前言安装elasticsearch-head步骤1&#xff1a;准备1. 安装docker2. 搜索可以使用的镜像。3. 也可从docker hub上搜索镜像。4. 选择合适的redis镜像。 步骤2&#xff1a;拉取elasticsearch-head镜像拉取镜像查看已拉取的镜像 步骤3&#xff1a;创建容器创建容器方式1&#…

canvas实现电子签名并且实时回显

canvas实现电子签名并且实时回显 效果&#xff1a; <template><div>canvas<canvasref"canvasF"mousedown"mouseDown"mousemove"mouseMove"mouseup"mouseUp"touchStart"touchStart"touchMove"touchMov…

Android中tools属性的使用

参考&#xff1a; 1.Android:Tools命名空间原来是有大用处的 2.Android中tools属性的使用 3.工具属性参考文档 4. 命名空间介绍 5. 注解 6. lint 7. 资源压缩shrink-resources 目录 一、概述二、引入tools命名空间三、tools 命名空间的作用有哪些&#xff1f;四、tools 命名空间…

异常处理:从生活中的插曲到代码中的挑战

文章目录 1. 异常&#xff1a;生活中与代码中的无奈2. 异常的体系结构&#xff1a;错误与异常3. 异常处理&#xff1a;抓取异常&#xff0c;保障稳定3.1 throw 和 throws3.2 try...catch3.3 finally 4. 自定义异常&#xff1a;灵活应对特定问题结语 在人类的日常生活和编程世界…

综合能源系统(6)——综合能源综合评估技术

综合能源系统关键技术与典型案例  何泽家&#xff0c;李德智主编 综合能源系统是多种能源系统非线性耦合的、多时间与空间尺度耦合的“源-网-荷一储”一体化系统&#xff0c;通过能源耦合、多能互补&#xff0c;能够实现能源的高效利用&#xff0c;并提高新能源的利用水平。对…

lscpu的各个参数是什么意思?

$ lscpu Architecture: x86_64 #架构 CPU op-mode(s): 32-bit, 64-bit #运行方式 Byte Order: Little Endian #字节顺序 CPU(s): 96 #逻辑cpu数 On-line CPU(s) list: 0-95 #在线cpu Thread(s) per core: 2 #每个核包含线程…

Nginx负载均衡以及keepalived高可用实验

Vip 10.1.122 Keepalived-master 10.1.1.132Keepalied-backup 10.1.1.133Realserver_1 10.1.1.136Realserver_2 10.1.1.137 四台机器上安装nginx&#xff0c;编译安装的话需要另外安装pcre包支持&#xff0c;安装在/usr/local/nginx Keepalived-master 和backu…

Michael.W基于Foundry精读Openzeppelin第24期——ERC165Storage.sol

0. 版本 [openzeppelin]&#xff1a;v4.8.3&#xff0c;[forge-std]&#xff1a;v1.5.6 0.1 ERC165Storage.sol Github: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.8.3/contracts/utils/introspection/ERC165Storage.sol ERC165Storage合约是ERC165…

工作:MODBUS通讯协议知识

工作&#xff1a;MODBUS通讯协议知识 一、Modbus三种通讯分类 Modbus TCP/IP 使用网口通讯&#xff0c;更多是用于快速网络设备&#xff0c;如机器人&#xff0c;上位机视觉。 Modbus RTU 使用RS232或者RS485/RS422接口&#xff0c;通讯方式是串口通讯&#xff0c;是直接传输…

Dynamics 365 字段类型介绍

实体的本质是数据库表,所以每种字段类型都有自己对应的数据库类型。不同的类型也有自己不同的展示界面。 1 字段类型总览 Dynamics365中支持的类型如图,其在C#中对应的类型在括号中 文本类型:单行文本(string)、多行文本(string) 数字类型:整数(int)、浮点数(double)、十…

fork--创建进程

fork–创建进程 fork函数基本知识 pid_t fork(void) 返回值&#xff1a;在父进程中&#xff0c;成功的话返回子进程的pid&#xff0c;失败返回-1在子进程中&#xff0c;返回值pid为0fork()函数将运行着的进程分裂出另一个子进程&#xff0c;它通过拷贝父进程的方式创建子进程…

FFmpeg常见命令行(五):FFmpeg滤镜使用

前言 在Android音视频开发中&#xff0c;网上知识点过于零碎&#xff0c;自学起来难度非常大&#xff0c;不过音视频大牛Jhuster提出了《Android 音视频从入门到提高 - 任务列表》&#xff0c;结合我自己的工作学习经历&#xff0c;我准备写一个音视频系列blog。本文是音视频系…

PHP最简单自定义自己的框架model使用(七)

1、实现model使用效果 2、自动加载model,KJ.php //自动加载文件public static function _autoload($className){switch ($className){//自动model类case substr($className,-5)Model:$path MODEL./.$className..php;if(is_file($path)) include $path;break;//自动加载控制器…