链表问题5——反转部分单向链表
题目
给定一个单向链表的头节点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 |
要求
- 如果链表长度为N,时间复杂度为O(N),额外空间复杂度要求为O(1)
- 如果不满足1<=from<=to<=N,则不用调整
思路
- 先判断如果不满足要求2,则直接返回头节点
- 找到from-1的节点fPre和to+1的节点tPos,现把中间需要反转的部分反转,再正确地连接tPre和tPos。
- 如果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——反转部分单向链表相关推荐
- 《程序员代码面试指南》第二章 链表问题 反转部分单向链表
题目 给一个单向链表和开始和结束的位置,将这两位置区间链表进行反转 java代码 /*** @Description:反转部分单向链表* @Author: lizhouwei* @CreateDate ...
- 反转链表:输入一个链表的头结点,反转该链表并输出反转后的链表的头结点。...
2019独角兽企业重金招聘Python工程师标准>>> 题目:定义一个函数,输入一个链表的头结点,反转该链表并输出反转后的链表的头结点. 为了正确的反转一个链表,需要调整链表 ...
- java数组转换成单链表_【转】单向链表(单链表)的Java实现
最近被问到链表,是一个朋友和我讨论Java的时候说的.说实话,我学习编程的近一年时间里,学到的东西还是挺少的.语言是学了Java和C#,关 于Web的学了一点Html+css+javascript.因 ...
- 链表之反转部分单向链表
package com.chenyu.zuo.linkedList;import com.chenyu.zuo.linkedList.RemoveByRatio.Node;/*** 题目:给定一个单向 ...
- 数据结构与算法java - 03 链表,单向链表,逆序打印单向链表
链表 Linked List 有序 链表是以节点的方式来存储,链式存储 每个节点包含 data 域, next 域:指向下一个节点 链表的各个节点不一定是连续存放 链表分带头节点的链表和没有头节点的链 ...
- 单链表的创建示意图, 显示单向链表的分析
SingleLinkedListDemo.java package com.dym.linkedlist;import java.util.Stack;public class SingleLinke ...
- php mysql 链表_php实现数据结构的单向链表
啥是单向链表 链表是以链式存储数据的结构,其不需要连续的存储空间,链表中的数据以节点来表示,每个节点由元素(存储数据)和指针(指向后继节点)组成. 单向链表(也叫单链表)是链表中最简单的一种形式,每个 ...
- (C++版)链表(一)——实现单向链表创建、插入、删除等相关操作
http://blog.csdn.net/fisherwan/article/details/25557545 前段时间用C语言实现了链表的相关操作,但是发现当时挺清楚的,过了一段时间又忘的差不多了, ...
- php链表构造,用PHP实现单向链表结构
链表的结构是由一个一个节点组成的,所谓链,就是每个节点的头尾连在一起.而单向链表就是:每个节点包含了当前节点的值和下一个节点引用.双向链表就是每个节点包含了当前节点的值和上下两个节点的引用.相对于数组 ...
最新文章
- iphone11返回上一级手势怎么设置_苹果iphone12怎么关闭程序appp 怎么返回上一步
- 使用python爬取东方财富网机构调研数据
- OJ1012: 求绝对值
- pytorch:admm
- 入职半年小结 | 给应届校招算法同学的几点建议
- discuz mysql配置文件_MySQL优化配置文件my.ini(discuz论坛)
- 一些学习的网址和资料
- CUMCM 2021-B:乙醇偶合制备C4烯烃(多元线性回归分析)
- uni-app 地图 可点击 可搜索全国
- SAP ABAP STANDARD TABLE,SORTED TABLE和HASHED TABLE简介
- 洛谷P1724 东风谷早苗
- [2021时空AI白皮书]时空人工智能:关键技术
- 五项python小游戏代码测试
- vb.net 编写的简易串口调试程序
- 数据库管理系统的层次结构--语言处理层
- 卷积到底卷了个啥?———对卷积的通俗理解
- Adobe国际认证中文网站_Adobe认证专家考试费用
- 非库安装问题而报错Expected Ptr<cv::UMat> for argument ‘src‘
- 帆软、永洪 BI、瓴羊 Quick BI 等工具,都有哪些特点呢?
- 怎么强制关闭docker
热门文章
- iPhone曝严重漏洞,用户接听FaceTime前或被“监听”!
- 专注文本处理,达观数据完成B轮融资,累计融资超2亿元
- Google把AI芯片装进IoT设备,与国内造芯势力何干?
- Java笔试面试总结—try、catch、finally语句中有return 的各类情况
- 为什么阿里巴巴禁止使用BigDecimal的equals方法做等值比较?
- 还在用Swagger生成接口文档?我推荐你试试它.....
- 都是推荐系统,广告算法和推荐算法有啥区别?
- 尹伊:用敏捷开发思维来成长!
- 《数据竞赛入门讲义》下载,北航计算机硕士两年经验总结
- 模型大十倍,性能提升几倍?谷歌研究员进行了一番研究