描述

将一个节点数为 size 链表 m 位置到 n 位置之间的区间反转,要求时间复杂度 O(n)O(n)O(n),空间复杂度 O(1)O(1)O(1)。
例如:
给出的链表为 1→2→3→4→5→NULL1\to 2 \to 3 \to 4 \to 5 \to NULL1→2→3→4→5→NULL, m=2,n=4m=2,n=4m=2,n=4,
返回 1→4→3→2→5→NULL1\to 4\to 3\to 2\to 5\to NULL1→4→3→2→5→NULL.

数据范围: 链表长度 0<size≤10000 < size \le 1000 0<size≤1000,0<m≤n≤size0 < m \le n \le size0<m≤n≤size,链表中每个节点的值满足 ∣val∣≤1000|val| \le 1000 ∣val∣≤1000

要求:时间复杂度 O(n)O(n)O(n) ,空间复杂度 O(n)O(n)O(n)

进阶:时间复杂度 O(n)O(n)O(n),空间复杂度 O(1)O(1)O(1)

示例1

输入:

{1,2,3,4,5},2,4

返回值:

{1,4,3,2,5}

示例2

输入:

{5},1,1

返回值:

{5}
ListNode *reverseBetween(ListNode *head, int m, int n) {if(head == NULL || head->next == NULL) return head;ListNode *q = NULL, *p = head;for (int i = 0; i < m - 1; i++){q = p;p = p->next;}// p此时指向第m个结点ListNode *end = p;ListNode *pPre = p, *nxt = NULL;p = p->next;// m->n之间的结点逆序for (int i = m + 1; i <= n; ++i){nxt = p->next;p->next = pPre;pPre = p;p = nxt;}// p指向原链表中第n个结点的下一个结点// end表示逆序子链表的尾结点end->next = p;// pPre指向的是逆序后的子链表头// q指向的是第m个结点前一个结点 注意有可能是NULLif (q)q->next = pPre;   // 不是NULL 链接起来即可elsehead = pPre;   // 是NULL 头结点即为子链表头return head;}

(每日一练c++)CC57 链表内指定区间反转相关推荐

  1. BM2 链表内指定区间反转

    描述 将一个节点数为 size 链表 m 位置到 n 位置之间的区间反转,要求时间复杂度 O(n)O(n),空间复杂度 O(1)O(1). 例如: 给出的链表为 1→2→3→4→5→NULL, m=2 ...

  2. 【链表】牛客网:链表内指定区间反转

    leetcode 206 如何原地反转单链表?_暮色_年华的博客-CSDN博客 这题是LeetCode206的变形 思路: 取出子链表后反转后连入原链表 import java.util.*;/** ...

  3. 牛客题霸 NC21 链表内指定区间反转

    https://www.nowcoder.com/practice/b58434e200a648c589ca2063f1faf58c 解决方案 Go func reverseBetween(head ...

  4. 【算法面试必刷JAVA版二】链表内指定区间反转

    盲目刷题,浪费大量时间,博主这里推荐一个面试必刷算法题库,刷完足够面试了.传送门:牛客网面试必刷TOP101

  5. 链表反转,指定区间反转,k个一组反转---详解

    牛客上的三道反转链表的题,入门题,反转链表有很多种做法,本来做第一题的时候是随便写了一种,然后后面发现我用的方法,在做第二题第三题的时候有点繁琐,所以就把三道题一起考虑了一下,选了一种相对更加清晰的思 ...

  6. 每日一练——回文链表

    作者:~小明学编程 文章专栏:每日一练--Java 格言:目之所及皆为回忆,心之所想皆为过往 回文链表 链接 234. 回文链表 - 力扣(LeetCode) 题目简介: 给你一个单链表的头节点 he ...

  7. java每日一练:面试题集合

    6.29:1.说一下jdk和jre的区别? JRE是java运行时环境,包含了java虚拟机,java基础类库.是使用java语言编写的程序运行所需要的软件环境,是提供给想运行java程序的用户使用的 ...

  8. 【每日一练 085】性能优化-实例优化(四)

    墨墨导读:本文出自墨天轮"每日一练"专栏,此专栏已连更84天,欢迎关注https://www.modb.pro/topic/26446(复制到浏览器中打开或者点击"阅读原 ...

  9. python输入数字并排序_「每日一练」巧用Python实现数字排序

    原标题:「每日一练」巧用Python实现数字排序 数字排序在我们的生产和生活中占着非常大的比重,这种思维和技术可以让一组数据更快更明了的展现在我们的面前,极大的提高了我们的工作效率! 那么,你知道如何 ...

最新文章

  1. Oracle Database 12c(12.1) Beta已经开始内部测试
  2. 【Python基础】Python正则表达式,从入门到实战,精华都在这里!
  3. Anaconda——安装与添加 Anaconda Python 免费仓库
  4. 2021考研计算机网络,2021考研:计算机网络复习重点
  5. wordpress主题 阿里百秀XIU v7.7版本
  6. Zookeeper权限控制ACL详解
  7. 不会延期!iPhone 12S预计如期在9月发售:升级三星LTPO屏幕
  8. java中 static变量和方法到底是存在内存什么区域?
  9. Apple Watch UX流程套件 Fresh模板
  10. @Scheduled cron表达式
  11. 【Oracle】ORA-30042: Cannot offline the undo tablespace
  12. H5自带的type=date或者month等日期控件移动端显示placeholder
  13. [转载] python中set使用介绍
  14. JavaScript - 自定义鼠标右键菜单
  15. Win10 1607 频繁断网,迅雷断网以及迅雷下载崩溃解决方案
  16. 1156:求π的值(函数题)
  17. 2018-8-10-win10-uwp-使用资源在后台创建控件
  18. python定义一个student类、有下面的_Python的类和方法——成员可见性
  19. plsql无法连接linux下的oracle服务器,提示:ora-12541:TNS 无监听程序
  20. MongoDB 5.0.8版本的使用

热门文章

  1. python pycharm安装pexpect
  2. 【2022-1-21】Batchnorm
  3. 公司起诉CTO拖延研发进度,索赔90万
  4. JavaCV音视频开发宝典:使用JavaCV采集windows系统声音并录制成mp3音频文件(FFmpeg采集windows系统声音)
  5. STM32F4通过U盘升级程序
  6. java 中的静态变量,静态代码块,动态代码块,构造方法执行顺序的深入探究
  7. 检信智能AI心理测评背后的创业故事
  8. 机器学习第五周神经网络 反向传播 嗷嗷好
  9. 制作GIF表情包需要什么
  10. 【Python】韦伯分布的拟合