题目

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.

题解

经典的题目就是链表逆序啦,一般的链表逆序是让把链表从前到后都逆序,这个是给定了起始位置和结束位置,方法是一样的。

就是维护3个指针,startpoint,node1和node2。

startpoint永远指向需要开始reverse的点的前一个位置。

node1指向正序中第一个需要rever的node,node2指向正序中第二个需要reverse的node。

交换后,node1 在后,node2在前。这样整个链表就逆序好了。

代码如下:

  1.  1     public ListNode reverseBetween(ListNode head, int m, int n) {
  2.  2         ListNode newhead = new ListNode(-1);
  3.  3         newhead.next = head;
  4.  4         
  5.  5         if(head==null||head.next==null)
  6.  6             return newhead.next;
  7.  7             
  8.  8         ListNode startpoint = newhead;//startpoint指向需要开始reverse的前一个
  9.  9         ListNode node1 = null;//需要reverse到后面去的节点
  10.          ListNode node2 = null;//需要reverse到前面去的节点
  11.          
  12.          for (int i = 0; i < n; i++) {
  13.              if (< m-1){
  14.                  startpoint = startpoint.next;//找真正的startpoint
  15.              } else if (== m-1) {//开始第一轮
  16.                  node1 = startpoint.next;
  17.                  node2 = node1.next;
  18.              }else {
  19.                  node1.next = node2.next;//node1交换到node2的后面
  20.                  node2.next = startpoint.next;//node2交换到最开始
  21.                  startpoint.next = node2;//node2作为新的点
  22.                  node2 = node1.next;//node2回归到node1的下一个,继续遍历
  23.              }
  24.          }
  25.          return newhead.next;
  26.      }

Reverse Linked List II leetcode java的更多相关文章

  1. Reverse Linked List II——LeetCode

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

  2. Reverse Linked List II [LeetCode]

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

  3. lc面试准备:Reverse Linked List II

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

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

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

  5. LeetCode之“链表”:Reverse Linked List && Reverse Linked List II

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

  6. 【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-pass. F ...

  7. 【原创】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 ...

  8. 【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-pass. F ...

  9. leetcode -day30 Reverse Linked List II

    1.  Reverse Linked List II  Reverse a linked list from position m to n. Do it in-place and in one- ...

随机推荐

  1. 在静态方法中应用spring注入的类

    最近在一次项目的重构中,原项目需要在静态方法中调用service,现在需要更换框架,service需要自动注入,无法再静态方法中调用 解决思路: 创建一个当前类的静态变量,创建一个方法,使用@Post ...

  2. CodeForces528A (STLset)

    题面 CodeForces 题解 横着切和竖着切是互相不影响的. 假设现在横着切成了很多段,显然此时面积最大的矩形的一边长就是这些段中长度最长的一段.竖着切的也是一样的. 所以就可以用\(set\)来 ...

  3. [leetcode tree]96. Unique Binary Search Trees

    Given n, how many structurally unique BST's (binary search trees) that store values 1...n? For examp ...

  4. 部署kettle7.1

    系统版本 [root@gaqzj ~]# cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core) 安装JDK1.8 jdk-8u161 ...

  5. FindWindow和FindWindowEx

    函数原型:FindWindow(lpszClassName,lpszWindowName) 参数:lpszClassName--窗口类名;lpszWindowName--窗口标题 功能:查找窗口,未找 ...

  6. [JAVA] JAVA 类路径

    Java 类路径 类路径是所有包含类文件的路径的集合. 类路径中的目录和归档文件是搜寻类的起始点. 虚拟机搜寻类 搜寻jre/lib和jre/lib/ext目录中归档文件中所存放的系统类文件 搜寻再从 ...

  7. PIC JDM Prototype Programmer 1001

    In need of a programmer for PIC micro controllers I decided to build my own one. This programmer has ...

  8. SQLServer存储过程返回值总结

    1.  存储过程没有返回值的情况(即存储过程语句中没有return之类的语句)  用方法 int count = ExecuteNonQuery(..)执行存储过程其返回值只有两种情况  (1)假如通 ...

  9. mysql-debug

    http://www1.huachu.com.cn/read/readbookinfo.asp?sectionid=1000002778 http://hedengcheng.com/?p=238 h ...

  10. linux strace追踪mysql执行语句 (mysqld --debug)

    转载请注明出处:使用strace追踪多个进程 http://www.ttlsa.com/html/1841.html http://blog.itpub.net/26250550/viewspace- ...