题目

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     public ListNode reverseBetween(ListNode head, int m, int n) {
 2         ListNode newhead = new ListNode(-1);
 3         newhead.next = head;
 4         
 5         if(head==null||head.next==null)
 6             return newhead.next;
 7             
 8         ListNode startpoint = newhead;//startpoint指向需要开始reverse的前一个
 9         ListNode node1 = null;//需要reverse到后面去的节点
10         ListNode node2 = null;//需要reverse到前面去的节点
11         
12         for (int i = 0; i < n; i++) {
13             if (i < m-1){
14                 startpoint = startpoint.next;//找真正的startpoint
15             } else if (i == 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

    原标题链接: http://oj.leetcode.com/problems/reverse-linked-list-ii/  这道题是比較常见的链表反转操作,只是不是反转整个链表.而是从m到n的一部 ...

  2. 【??链表】LeetCode 92. Reverse Linked List II

    LeetCode 92. Reverse Linked List II Solution1: 参考网址:http://www.cnblogs.com/grandyang/p/4306611.html ...

  3. LeetCode | Reverse Linked List II

    这道链表反转题也是搞的我焦头烂额,好久没有写链表了,注意记忆这些 Reverse Linked List II QuestionEditorial Solution My Submissions To ...

  4. LeetCode 92. Reverse Linked List II

    92. Reverse Linked List II Reverse a linked list from position m to n. Do it in one-pass. 将位置m的链接列表反 ...

  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: Given 1-> ...

  6. [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-> ...

  7. leetcode : Reverse Linked List II [two pointers]

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

  8. (LeetCode 92)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-> ...

  9. LeetCode Reverse Linked List II

    链表局部反转问题 代码如下: class Solution {public ListNode reverseBetween(ListNode head, int m, int n) {if (m == ...

最新文章

  1. php redis 二进制,php-redis扩展
  2. 用这种方法实现无监督端到端图像分类!(附论文)
  3. 浅析React之事件系统(二)
  4. LeetCode题组:第169题-多数元素
  5. asp下载防盗链代码
  6. 计算机将成为学生们的老师英语,重庆英语教师
  7. java通用编码规范考试_《java编码规范考试题答案》.doc
  8. python调用zabbixapi接口_python调用zabbix api获取主机信息
  9. integer expression expected或者unary operator expected
  10. mysql5.5 replication_mysql5.5 master-slave(Replication)配置
  11. python中的文件怎么处理_python 中有关文件处理
  12. 预训练新范式!为什么Prompt会更有效?
  13. Python 做自动化测试环境搭建
  14. Android内存泄漏分析心得
  15. RocketMQ延迟消息的底层实现源码解析
  16. 2021概率论与数理统计辅导讲义-余丙森
  17. java一定时间间隔的定时任务_详解java定时任务
  18. 汉字风格迁移篇---用于汉字多字体生成的多样性正则化StarGAN
  19. 离境收心,入于虚无。
  20. java基础巩固-宇宙第一AiYWM:为了维持生计,四大基础之OS_Part_2整起~IO们那些事【包括五种IO模型:(BIO、NIO、IO多路复用、信号驱动、AIO);零拷贝、事件处理及并发等模型】

热门文章

  1. Android开发-屏幕常亮的方法
  2. go消息服务器吗,Go语言聊天服务器
  3. python树莓派设备_Python+树莓派制作IoT(物联网)门控设备
  4. pc双网卡实现路由转发_route命令如何使用?如何利用route命令实现内外网切换?...
  5. nodejs--http模块
  6. HTML学习02之基础;元素;属性
  7. 【数学和算法】初识卡尔曼滤波器(六)
  8. MongoDB【快速入门】
  9. 最简便的备份MySql数据库方法
  10. 使用Spring Boot开发Web项目