``````/**
*
*
* 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 ≤ m ≤ n ≤ length of list.
*/

/**
*
* 反转单向链表指定范围内的元素
*
* 需要考虑第一个元素是否被翻转
*
* @param m
* @param n
* @return
*/
public Node reverse (Node head, int m, int n) {
}
Node dummy = new Node();
int pos = 1;
Node unreverseListLast = dummy;
Node reverseListLast = null;
Node next = null;
Node pre = dummy;
while (cur != null && pos <= n) {
next = cur.next;
if (pos == m) {
unreverseListLast = pre;
reverseListLast = cur;
} else if (pos > m) {
// 在制定范围内，反转
cur.next = pre;
}
pre = cur;
cur = next;
pos++;
}

// 反转完指定范围内的元素，将反转部分和未反转部分连接起来
unreverseListLast.next = pre;
reverseListLast.next = cur;

return dummy.next;
}

private static class Node {
int value;
Node next;

@Override
public String toString() {
return "Node{" +
"value=" + value +
", next=" + (next == null ? "" : next.value) +
'}';
}
}

private static void print (Node node) {
while (node != null) {
System.out.println(node);
node = node.next;
}
System.out.println();
}

public Node createList (int[] arr) {
if (arr.length == 0) {
return null;
}
for (int i = 1; i < arr.length; i++) {
Node node = new Node();
node.value = arr[i];
pointer.next = node;
pointer = pointer.next;
}
}

public static void main(String[] args) {
}

}
``````

1. 【原创】Leetcode -- Reverse Linked List II -- 代码随笔（备忘）

题目:Reverse Linked List II 题意:Reverse a linked list from position m to n. Do it in-place and in one-p ...

2. [LeetCode] Reverse Linked List II 倒置链表之二

Reverse a linked list from position m to n. Do it in-place and in one-pass. For example:Given 1-> ...

3. [leetcode]Reverse Linked List II @ Python

4. [LeetCode] Reverse Linked List II

Reverse a linked list from position m to n. Do it in-place and in one-pass. For example:Given 1-> ...

5. [Leetcode] Reverse linked list ii 反转链表

Reverse a linked list from position m to n. Do it in-place and in one-pass. For example:Given1->2 ...

6. leetcode——Reverse Linked List II 选择链表中部分节点逆序（AC）

Reverse a linked list from position m to n. Do it in-place and in one-pass. For example: Given 1-> ...

7. LeetCode Reverse Linked List II 反置链表2

题意:将指定的一段位置[m,n]的链表反置,返回链表头. 思路:主要麻烦在链表头,如果要从链表头就开始,比较特殊. 目前用DFS实现,先找到m-1的位置,再找到n+1的位置,中间这段就是否要反置的,交 ...

1 题目 Reverse a linked list from position m to n. Do it in-place and in one-pass. For example:Given 1 ...

1. Reverse Linked List 题目链接 题目要求: Reverse a singly linked list. Hint: A linked list can be reversed ...

10. LeetCode 92. 反转链表 II(Reverse Linked List II)

92. 反转链表 II 92. Reverse Linked List II 题目描述 反转从位置 m 到 n 的链表.请使用一趟扫描完成反转. 说明: 1 ≤ m ≤ n ≤ 链表长度. LeetC ...

随机推荐

1. vim编辑器使用相关

alias 查看vi是否已经绑定vim 一.vim的块选择 v 字符选择 V 行选择 ctrl+v 快选择 y 复制选择的地方(p进行粘贴) d 删除选择的地方 二.vim多文件编辑 :n 编辑下一个 ...

2. 【转】iOS 硬件授权检测：定位服务、通讯录、日历、提醒事项、照片、蓝牙共享、麦克风、相机等

iOS系统版本的不断升级的前提,伴随着用户使用设备的安全性提升,iOS系统对于App需要使用的硬件限制也越来越严格,App处理稍有不妥,轻则造成功能不可用用户还不知道,重则会造成App Crash. ...

3. windows 下的命令行工具。。

4. oauth简单使用

一.oauth原理参考 理解OAuth 2.0 二.本例中采用授权码模式 大致流程 (A)用户访问客户端,后者将前者导向认证服务器. (B)用户选择是否给予客户端授权. (C)假设用户给予授权,认证服 ...

5. 【并发编程】【JDK源码】JDK的（J.U.C）java.util.concurrent包结构

本文从JDK源码包中截取出concurrent包的所有类,对该包整体结构进行一个概述. 在JDK1.5之前,Java中要进行并发编程时,通常需要由程序员独立完成代码实现.当然也有一些开源的框架提供了这 ...

6. Python中创建守护进程

python 创建守护进程 python 的os.setdid()提供了类似linux c api的 setsid 也可以通过unix双fork创建守护进程. 几个相关的函数 os.umask(0) ...

7. C#实现的三种方式实现模拟键盘按键

1.System.Windows.Forms.SendKeys 组合键:Ctrl = ^ .Shift = + .Alt = % 模拟按键:A private void button1_Click(o ...

8. poj1733（区间上的种类并查集）

题目大意是:一个由0,1组成的数字串~~,现在你问一个人,第i位到第j位的1的个数为奇数还是偶数.一共会告诉你几组这样的数 要你判断前k组这个人回答的都是正确的,到第k+1组,这个人说的是错的,要你输 ...

9. php 实现Iterator 接口

<?php class MyIterator implements Iterator{ private \$var = array(); public function __construct(\$ ...

10. appium+python自动化30-list定位（find_elements）

前言 有时候页面上没有id属性,并且其它的属性不唯一,平常用的比较多的是单数(element)的定位方法,遇到元素属性不唯一,就无法直接定位到了. 于是我们可以通过复数(elements)定位,先定位 ...