一. 问题描述

反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。

说明:

1 ≤ m ≤ n ≤ 链表长度。

示例:

输入: 1->2->3->4->5->NULL, m = 2, n = 4

输出: 1->4->3->2->5->NULL

二. 解题思路

解题思路:利用链表性质进行求解,一次扫描。

步骤一:找到m的边界,将m前面一个节点用first指向,m的第一个节点用temp指向,temp的下一个节点用data指向,data的下一个节点用result指向。

步骤二:将data的下一个节点指向temp,然后将temp指向data,data指向result,

Result指向result的下一个节点。

步骤三:重复步骤二直到到达n的边界。

步骤四:将m边界节点的第一个节点指向data,m边界前一个节点指向temp。

三. 执行结果

执行用时 :0 ms, 在所有 java 提交中击败了100.00%的用户

内存消耗 :34.2 MB, 在所有 java 提交中击败了87.11%的用户

四. Java代码

class Solution {
public ListNode reverseBetween(ListNode head, int m, int n) {
if(m==n)
{
return head;
}else
{
ListNode all=new ListNode(0);
all.next=head;
ListNode temp=all;
ListNode first=null;
for(int i=0;i<m&&temp!=null;i++)
{
first=temp;
temp=temp.next;
}
ListNode data=temp.next;
ListNode result=data.next;
for(int j=m;j<n;j++)
{
data.next=temp;
temp=data;
data=result;
if(result!=null)
result=result.next;
}
first.next.next=data;
first.next=temp; return all.next;
}
}
}

最新文章

  1. REDHAT一总复习1 ssh配置 禁用root用户SSH连接
  2. sizeof运算符和strlen函数的区别
  3. eclipse luna 安装 Hadoop 1.2.1 eclipse-plugin
  4. C# 从服务器下载文件代码的几种方法
  5. MVC小系列(二十)【给Action提供HttpStatusCodeResult】
  6. asp.net数据导出到excel表格,并设置表格样式
  7. CSS之定位布局(position,定位布局技巧)
  8. Python笔记&#183;第一章—— Python基础(一)
  9. js过滤html标签
  10. drf7 分页组件
  11. xshell 5连接NAT模式的虚拟机
  12. &lt;20190103&gt;别傻了,一些 新的技术注定只适合新人
  13. 【hdu5306】 Gorgeous Sequence
  14. 学习Git---20分钟git快速上手
  15. CFR - another java decompiler批量反编译jar文件
  16. Redis全方位讲解--主从复制
  17. crontab 详解 -- (转)
  18. 实现自动文本摘要(python,java)
  19. library和libraryTarget使用场景组件开发
  20. java整理(三)

热门文章

  1. [转载]桥接与NAT
  2. Centos7.3安装jenkins
  3. Python--字典的一些用法dict.items()
  4. golang设置运行的核数
  5. SpringBoot exception异常处理机制源码解析
  6. java中的自动装箱和拆箱
  7. SpringCloud Stream 消息驱动
  8. Spring Boot Redis 分布式缓存的使用
  9. 编译 recastnavigation
  10. 实现Bootstrap表格拖拽