【python】Leetcode每日一题-反转链表 II
【python】Leetcode每日一题-反转链表 II
【题目描述】
给你单链表的头节点 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
进阶: 你可以使用一趟扫描完成反转吗?
【分析】
既然有进阶提示,那就直接开始进阶解法吧!
- 思路: - 创建一个新链表头空节点,遍历时,当 - index < left时,直接使用原链表节点,当 \(left\leq index \leq right\) 时,利用临时节点将中间部分指针方向反转,再让前一部分指向中间部分头结点,中间部分尾节点指向后一部分。
- 时间复杂度:\(O(m)\) 
 
 - AC代码: - # 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
 """
 newList = ListNode()
 index = 1
 p = newList while(head):
 if(index==left):
 break
 p.next = head
 head = head.next
 p = p.next
 index += 1 t = head q = head
 head = head.next
 while(index < right):
 t_ = q
 q = head
 head = head.next
 q.next = t_
 index += 1 p.next = q
 if head == None:
 t.next = None
 else:
 t.next = head return newList.next
 
- 结果:  
- 讨论: - 官方题解: 戳这里
- 官方解法中的头插法和自己的优化版的穿针引线的时间复杂度相同,但提供了一个很好的思路。
 
【python】Leetcode每日一题-反转链表 II的更多相关文章
- 【python】Leetcode每日一题-旋转链表
		[python]Leetcode每日一题-旋转链表 [题目描述] 给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置. 示例1: 输入:head = [1,2,3,4,5] ... 
- leetcode每日一题——反转整数
		题目: 反转整数 难度: 简单 描述: 给定一个 32 位有符号整数,将整数中的数字进行反转. 解法: class Solution { public int reverse(int x) { //i ... 
- 【python】Leetcode每日一题-删除排序链表中的重复元素
		[python]Leetcode每日一题-删除排序链表中的重复元素 [题目描述] 存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除所有重复的元素,使每个元素 只出现一次 . 返回同 ... 
- 【python】Leetcode每日一题-删除排序链表中的重复元素2
		[python]Leetcode每日一题-删除排序链表中的重复元素2 [题目描述] 存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除链表中所有存在数字重复情况的节点,只保留原始链表 ... 
- 【python】Leetcode每日一题-直方图的水量(接雨水)
		[python]Leetcode每日一题-直方图的水量(接雨水) [题目描述] 给定一个直方图(也称柱状图),假设有人从上面源源不断地倒水,最后直方图能存多少水量?直方图的宽度为 1. 上面是由数组 ... 
- LeetCode 92. 反转链表 II(Reverse Linked List II)
		92. 反转链表 II 92. Reverse Linked List II 题目描述 反转从位置 m 到 n 的链表.请使用一趟扫描完成反转. 说明: 1 ≤ m ≤ n ≤ 链表长度. LeetC ... 
- 【python】Leetcode每日一题-寻找旋转排序数组中的最小元素
		[python]Leetcode每日一题-寻找旋转排序数组中的最小元素 [题目描述] 已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组.例如,原数组nums ... 
- 【python】Leetcode每日一题-删除有序数组中的重复项
		[python]Leetcode每日一题-删除有序数组中的重复项 [题目描述] 给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 最多出现一次 ,返回删除后数组的新长度. 不要 ... 
- [LeetCode每日一题]81. 搜索旋转排序数组 II
		[LeetCode每日一题]81. 搜索旋转排序数组 II 问题 已知存在一个按非降序排列的整数数组 nums ,数组中的值不必互不相同. 在传递给函数之前,nums 在预先未知的某个下标 k(0 & ... 
随机推荐
- 前端学习 node 快速入门 系列 —— 简易版 Apache
			其他章节请看: 前端学习 node 快速入门 系列 简易版 Apache 我们用 node 来实现一个简易版的 Apache:提供静态资源访问的能力. 实现 直接上代码. - demo - stati ... 
- 2019 GDUT Rating Contest I : Problem H. Mixing Milk
			题面: H. Mixing Milk Input file: standard input Output file: standard output Time limit: 1 second Memory ... 
- Flutter教程- Dart语言规范-知识点整理
			Flutter教程- Dart语言知识点整理 Dart语言简介 Dart语言介绍 ① 注释的方式 ② 变量的声明 ③ 字符串的声明和使用 ④ 集合变量的声明 ⑤ 数字的处理 ⑥ 循环的格式 ⑦ 抛异常 ... 
- 现代c++模板元编程:遍历tuple
			tuple是c++11新增的数据结构,通过tuple我们可以方便地把各种不同类型的数据组合在一起.有了这样的数据结构我们就可以轻松模拟多值返回等技巧了. tuple和其他的容器不同,标准库没有提供适用 ... 
- 攻防世界 reverse babymips
			babymips XCTF 4th-QCTF-2018 mips,ida中想要反编译的化需要安装插件,这题并不复杂直接看mips汇编也没什么难度,这里我用了ghidra,直接可以查看反编译. 1 ... 
- ClickHouse性能优化?试试物化视图
			一.前言 ClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS):目前我们使用CH作为实时数仓用于统计分析,在做性能优化的时候使用了 物化视图 这一特性作为优化手段,本文主 ... 
- [状压DP]关灯问题II
			关 灯 问 题 I I 关灯问题II 关灯问题II 题目描述 现有n盏灯,以及 m m m个按钮.每个按钮可以同时控制这 n n n盏灯--按下了第 i i i个按钮,对于所有的灯都有一个效果.按下i ... 
- Recoil 的使用
			通过简单的计数器应用来展示其使用.先来看没有 Recoil 时如何实现. 首先创建示例项目 $ yarn create react-app recoil-app --template typescri ... 
- AgileConfig - 轻量级配置中心1.2.0发布,全新的UI✨✨✨
			AgileConfig自发布以来有个"大问题"-UI太丑.因为当初这个项目是给自己用的,连UI界面都没有,全靠手动在数据库里改配置.后来匆匆忙忙使用bootstrap3简单的码了一 ... 
- 北航OO第一单元作业总结(Retake)
			前言:当我写这篇博客的时候,我的心情是复杂的,因为这实际上是我第二次写这篇博客--我今年重修的这门课.我对去年的成绩心有不甘--在激烈的竞争下,我虽然尽可能完成了所有作业(仅一次作业未通过弱测),但爆 ... 
