博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【leetcode】92. Reverse Linked List II
阅读量:4965 次
发布时间:2019-06-12

本文共 1125 字,大约阅读时间需要 3 分钟。

Reverse a linked list from position m to n. Do it in-place and in one-pass.

For example:

Given 1->2->3->4->5->NULL, m = 2 and n = 4,

return 1->4->3->2->5->NULL.

Note:

Given m, n satisfy the following condition:
1 ≤ mn ≤ length of list.

Tips:给定一个链表,与两个整数m ,n;

从m位置开始,到n位置结束,反转这段链表,返回翻转后的链表。

思路:先让pre指针向前走m-1个位置,记住当前的结点 NodeBeforeM。

在让pre指针想下走一个位置到达m处,记下当前结点为nodeM

m+1位置的结点记为 cur

从m~n 通过改动指针的方式来翻转这段链表,代码如下

for(int i=m;i

结束循环之后,

pre结点指向n位置的结点

cur结点指向n+1位置的结点

再将NodeBeforeM cur结点与翻转后的结点 前后连接起来 就可以了。

整体代码如下:

package medium;import dataStructure.ListNode;public class L92ReverseLinkedListII {     public ListNode reverseBetween(ListNode head, int m, int n) {         if(head==null ||m<=0||n<=0||m>n)             return null;         if(m==n) return head;            ListNode node = new ListNode(0);            ListNode pre=node;            pre.next=head;            node=pre;            for(int i=1;i

输出结果如下:

nodeBaforeM:1nodeM:2cur3!!!!!!!!!!!!pre4cur5next6!!!!!!!!!!!!m=2;~~~~~n=4;1 ->2 ->3 ->4 ->5 ->6 ->7 ->8 ->9 ~~~~~~~~~~~~~~~~~~~~~~~1 ->4 ->3 ->2 ->5 ->6 ->7 ->8 ->9

 

转载于:https://www.cnblogs.com/yumiaomiao/p/8414394.html

你可能感兴趣的文章
屏蔽错误:LNK2038
查看>>
解决cannot find -lstdc++的问题
查看>>
C# 基础知识
查看>>
组合数据类型练习,英文词频统计实例
查看>>
mysql5.6.24的安装与简单使用
查看>>
验证码的生成
查看>>
Maven搭建hadoop环境报Missing artifact jdk.tools:jdk.tools:jar:1.7
查看>>
创业的关键:顺势而为
查看>>
汉诺塔问题 Hanio ——递归思想
查看>>
throw和throws的区别
查看>>
shell 基数数值方法
查看>>
近期前端中的 一些常见的面试题
查看>>
数据库远程全备份的一种解决方案
查看>>
JavaScript的基础应用
查看>>
php函数fsockopen的使用
查看>>
webapi+swagger ui 文档描述
查看>>
c++ char* 与LPCTSTR相互转化
查看>>
codevs1044 拦截导弹(最长不下降子序列dp)
查看>>
AS问题解决系列1—Unable to execute DX错误
查看>>
在线任意进制转换工具 - aTool在线工具
查看>>