描述

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

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

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

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

示例1

输入:

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

返回值:

{1,4,3,2,5}

示例2

输入:

{5},1,1

返回值:

{5}
/*** struct ListNode {*  int val;*   struct ListNode *next;* };** C语言声明定义全局变量请加上static,防止重复定义*/
/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param head ListNode类 * @param m int整型 * @param n int整型 * @return ListNode类*/
struct ListNode* reverseBetween(struct ListNode* head, int m, int n ) {// write code herestruct ListNode* t;struct ListNode* new;struct ListNode* mi;struct ListNode* pre=NULL;struct ListNode* pro;if(m==n){return head;}else{  //总共分为三部分:m之前的头和尾,[m,n]的逆转后的头和尾,n之后的头t=head;  //保存表头for(int j=0;j<m-1;j++){  //m大于1的时候pre=head;  //指向m-1的节点,m不为1head=head->next;}//此时head是指向m节点的mi=head;  //逆序后的子表尾第n个节点for(int i=m;i<=n;i++){new=head->next;head->next=pro;pro=head;  //指向逆序后的子表头head=new;  //指向n+1个节点}  mi->next=head;if(pre!=NULL)pre->next=pro;else   //如果为空,则m从第一个位置开始t=pro;  return t;}
}

BM2 链表内指定区间反转相关推荐

  1. (每日一练c++)CC57 链表内指定区间反转

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

  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. 组合数学-容斥原理-求指定区间内与n互素的数的个数

    求指定区间内与n互素的数的个数 给出整数n和r.求区间[1,r]中与n互素的数的个数. 去解决它的逆问题,求不与n互素的数的个数. 考虑n的所有素因子pi(i=1···k) 在[1,r]中有多少数能被 ...

  7. 在多个指定区间内生成随机数,且随机数总和固定算法

    在多个指定区间内生成随机数,且随机数总和固定算法 一.介绍 最近项目上遇到了一个需求就是在多个指定区间内生成总和恒定的随机数. 示例:在[1-3].[4-20].[24-100]区间上分别生成一个随机 ...

  8. Python实现正态分布指定区间内【置信区间】概率值计算

    学过概率论的相信对于正态分布都不会陌生,这个可以说是非常经典非常重要的一种概率分布了,在现实生活中也是广泛在使用的,比如说:男女的升高服从正态分布,灯泡的寿命服从正态分布,某地区的降雨量服从正态分布, ...

  9. 三元二次方程式x2+y 2=z2的正整数解x、y、z称为一组勾股数,又称为毕达哥拉斯三元数组。该方程式也称为“商高方程”或“毕达哥拉斯方程”。 试通过程序设计求指定区间[a,b]内的所有勾股数组。

    /*试通过程序设计求指定区间[a,b]内的所有勾股数组. 输入 输入两个正整数a, b (a<b). 输出 输出[a,b]区间内的所有勾股数组. 样例输入 30, 90 样例输出*/ #defi ...

最新文章

  1. linux添加理由,让大家使用Linux的6个理由
  2. E - 秋实大哥与战争
  3. 文巾解题 11. 盛最多水的容器
  4. 我的代码和注释都写的像坨屎,那又怎么样?
  5. dos的echo on与echo off命令用法实例讲解
  6. 收藏 | 超详细的Oracle19c安装步骤
  7. 波形捕捉:(2)创建捕捉设备对象
  8. 基于mcp940反编译Minecraft源代码
  9. org.apache.ibatis.reflection.ReflectionException: There is no getter for property named XXX
  10. Jackson 学习
  11. 不要相信程序员在加班时间写的代码
  12. EP100底层封装-LibCreateSourceFile()函数
  13. C# 设置鼠标光标为自定义图片
  14. 使用并解析 OPML 格式的订阅列表来转移自己的 RSS 订阅(概念篇)
  15. 龙芯计算机价格,龙芯电脑目标售价有望逼近1000元
  16. 【Linux】制作U-Boot烧写镜像到SD卡的过程(上篇)
  17. python爬虫应聘信息_python爬虫获取拉钩网在线搜索招聘信息(超实用!)
  18. 华为OD机试 - 按身高和体重排队(Java JS Python)
  19. 与《新走遍美国》的邂逅
  20. C 语言 某人在国外留学,不熟悉当地的天气预报中的华氏温度值,请编程按每隔10°输出0°到300°之间的华氏温度的对照表,方便他对照查找

热门文章

  1. boost::math模块使用来自函数调用的常量的测试程序
  2. boost::intrusive::slist用法的测试程序
  3. boost::dijkstra_shortest_paths_no_color_map用法的测试程序
  4. boost::geometry模块多边形DP算法简化示例
  5. GDCM:dicom文件的SHA1测试程序
  6. Boost:boost::asio模块的引用计数测试程序
  7. VTK:Rendering之ColoredSphere
  8. VTK:PolyData之SurfaceContourLineInterpolator
  9. VTK:开发Warnings实例
  10. OpenCV立体校准stereo calib的实例(附完整代码)