题目

给定一个单向链表的头节点head,以及两个整数from和to,在单向链表上把第from个节点到第to个节点这一部分进行反转。

输入 调整结果为
1->2->3->4->5->null, from=2,to=4 1->4->3->2->5->null
1->2->3->null, from=1,to=3 3->2->1->null

要求

  1. 如果链表长度为N,时间复杂度为O(N),额外空间复杂度要求为O(1)
  2. 如果不满足1<=from<=to<=N,则不用调整

思路

  1. 先判断如果不满足要求2,则直接返回头节点
  2. 找到from-1的节点fPre和to+1的节点tPos,现把中间需要反转的部分反转,再正确地连接tPre和tPos。
  3. 如果tPre为空,说明头节点在反转部分内,则需要返回新的头节点。如果不为空则返回之前的头节点。

源码

public class Node{public int value;public Node next;public Node(int data){this.value=data;}
}public Node reversePart(Node head,int from,int to){int len=0;//新的头节点Node node1=head;Node fPre=null;Node tPos=null;//找到tPre和tPoswhile(node1!=null){len++;fPre=len==from-1?node1:fPre;tPos=len==to+1?node1:tPos;node1=node.next;}//第一阶段if(from>to||from<1||to>len){return head;}//第二阶段,进行反转node1=fPre==null?head:fPre.next;Node node2=node1.next;node1.next=tPos;Node next=null;while(node2!=tPos){next=node2.next;node2.next=node1;node1=node2;node2=next;}//第三部判断fPre是否为空if(fPre!=null){fPre.next=node1;return head;}return node1;
}

链表问题5——反转部分单向链表相关推荐

  1. 《程序员代码面试指南》第二章 链表问题 反转部分单向链表

    题目 给一个单向链表和开始和结束的位置,将这两位置区间链表进行反转 java代码 /*** @Description:反转部分单向链表* @Author: lizhouwei* @CreateDate ...

  2. 反转链表:输入一个链表的头结点,反转该链表并输出反转后的链表的头结点。...

    2019独角兽企业重金招聘Python工程师标准>>> 题目:定义一个函数,输入一个链表的头结点,反转该链表并输出反转后的链表的头结点.     为了正确的反转一个链表,需要调整链表 ...

  3. java数组转换成单链表_【转】单向链表(单链表)的Java实现

    最近被问到链表,是一个朋友和我讨论Java的时候说的.说实话,我学习编程的近一年时间里,学到的东西还是挺少的.语言是学了Java和C#,关 于Web的学了一点Html+css+javascript.因 ...

  4. 链表之反转部分单向链表

    package com.chenyu.zuo.linkedList;import com.chenyu.zuo.linkedList.RemoveByRatio.Node;/*** 题目:给定一个单向 ...

  5. 数据结构与算法java - 03 链表,单向链表,逆序打印单向链表

    链表 Linked List 有序 链表是以节点的方式来存储,链式存储 每个节点包含 data 域, next 域:指向下一个节点 链表的各个节点不一定是连续存放 链表分带头节点的链表和没有头节点的链 ...

  6. 单链表的创建示意图, 显示单向链表的分析

    SingleLinkedListDemo.java package com.dym.linkedlist;import java.util.Stack;public class SingleLinke ...

  7. php mysql 链表_php实现数据结构的单向链表

    啥是单向链表 链表是以链式存储数据的结构,其不需要连续的存储空间,链表中的数据以节点来表示,每个节点由元素(存储数据)和指针(指向后继节点)组成. 单向链表(也叫单链表)是链表中最简单的一种形式,每个 ...

  8. (C++版)链表(一)——实现单向链表创建、插入、删除等相关操作

    http://blog.csdn.net/fisherwan/article/details/25557545 前段时间用C语言实现了链表的相关操作,但是发现当时挺清楚的,过了一段时间又忘的差不多了, ...

  9. php链表构造,用PHP实现单向链表结构

    链表的结构是由一个一个节点组成的,所谓链,就是每个节点的头尾连在一起.而单向链表就是:每个节点包含了当前节点的值和下一个节点引用.双向链表就是每个节点包含了当前节点的值和上下两个节点的引用.相对于数组 ...

最新文章

  1. iphone11返回上一级手势怎么设置_苹果iphone12怎么关闭程序appp 怎么返回上一步
  2. 使用python爬取东方财富网机构调研数据
  3. OJ1012: 求绝对值
  4. pytorch:admm
  5. 入职半年小结 | 给应届校招算法同学的几点建议
  6. discuz mysql配置文件_MySQL优化配置文件my.ini(discuz论坛)
  7. 一些学习的网址和资料
  8. CUMCM 2021-B:乙醇偶合制备C4烯烃(多元线性回归分析)
  9. uni-app 地图 可点击 可搜索全国
  10. SAP ABAP STANDARD TABLE,SORTED TABLE和HASHED TABLE简介
  11. 洛谷P1724 东风谷早苗
  12. [2021时空AI白皮书]时空人工智能:关键技术
  13. 五项python小游戏代码测试
  14. vb.net 编写的简易串口调试程序
  15. 数据库管理系统的层次结构--语言处理层
  16. 卷积到底卷了个啥?———对卷积的通俗理解
  17. Adobe国际认证中文网站_Adobe认证专家考试费用
  18. 非库安装问题而报错Expected Ptr<cv::UMat> for argument ‘src‘
  19. 帆软、永洪 BI、瓴羊 Quick BI 等工具,都有哪些特点呢?
  20. 怎么强制关闭docker

热门文章

  1. iPhone曝严重漏洞,用户接听FaceTime前或被“监听”!
  2. 专注文本处理,达观数据完成B轮融资,累计融资超2亿元
  3. Google把AI芯片装进IoT设备,与国内造芯势力何干?
  4. Java笔试面试总结—try、catch、finally语句中有return 的各类情况
  5. 为什么阿里巴巴禁止使用BigDecimal的equals方法做等值比较?
  6. 还在用Swagger生成接口文档?我推荐你试试它.....
  7. 都是推荐系统,广告算法和推荐算法有啥区别?
  8. 尹伊:用敏捷开发思维来成长!
  9. 《数据竞赛入门讲义》下载,北航计算机硕士两年经验总结
  10. 模型大十倍,性能提升几倍?谷歌研究员进行了一番研究