92. Reverse Linked List II

Reverse a linked list from position m to n. Do it in one-pass.
将位置m的链接列表反转到n。 一次通过。

Note: 1 ≤ m ≤ n ≤ length of list.

Example:

Input: 1->2->3->4->5->NULL, m = 2, n = 4
Output: 1->4->3->2->5->NULL

代码

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode(int x) : val(x), next(NULL) {}* };*/
class Solution {public:ListNode* reverseBetween(ListNode* head, int m, int n) {int change_len=n-m+1;       //计算需要逆置的节点个数ListNode *pre_head=NULL;    //初始化开始逆置的节点的前驱ListNode *result=head;      //最终转换后的链表头节点,非特殊情况即为headwhile(head && --m){pre_head=head;      //记录head的前驱head=head->next;}ListNode *modify_list_tail = head;      //将modify_list_tail指向当前的head,即逆置后的链表尾ListNode *new_head = NULL;while(head&&change_len){//逆置change_len个节点ListNode *next=head->next;head->next=new_head;new_head=head;head=next;change_len--;       //每完成一个节点逆置,change_len--;}modify_list_tail->next=head;     //连接逆置后的链表尾与逆置段的后一个节点if(pre_head){//如果pre_head不空,说明不是从第一个节点开始逆置的,m>1pre_head->next=new_head;    //将逆置链表开始的节点前驱与逆置后的头节点连接}else{//如果pre_head为空,说明m==1,从第一个节点开始逆置,结果即为逆置后的头节点result=new_head;}return result;}
};

分析

首先找到四个关键的节点:逆置段头节点的前驱、逆置前头节点即逆置后尾节点、逆置前尾节点即逆置后头节点、逆置段尾节点的后继;



LeetCode 92. Reverse Linked List II相关推荐

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

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

  2. (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-> ...

  3. LeetCode 92. Reverse Linked List II--Python 解法--反转部分链表--笔试算法题

    题目地址:Reverse Linked List II - LeetCode Reverse a linked list from position m to n. Do it in one-pass ...

  4. 92. Reverse Linked List II

    题目链接:https://leetcode.com/problems/reverse-linked-list-ii/ 解题思路: 1 /** 2 * Definition for singly-lin ...

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

    题目链接:https://leetcode.com/problems/reverse-linked-list-ii/ 思路: 先找到需要反转部分的首部,然后依次压栈, 最后出栈,连接即可. AC 2m ...

  6. let 92. Reverse Linked List II

    主题思想: 链表翻转: 链表翻转, 链表翻转经典代码: public ListNode reverseList(ListNode head){if(head==null||head.next==nul ...

  7. LeetCode | Reverse Linked List II

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

  8. Leetcode 206. Reverse Linked List

    Similar Questions Reverse Linked List II Binary Tree Upside Down Palindrome Linked List 思路:链表反转. 解法一 ...

  9. LeetCode 206 Reverse Linked List--反转链表--迭代与递归解法--递归使用一个临时变量,迭代使用3个

    此题链接:Reverse Linked List - LeetCode Reverse a singly linked list. Example: Input: 1->2->3-> ...

最新文章

  1. 宇通客车java_6米采血车
  2. 利用partial快乐驱动开发
  3. Kubernetes——基本概念与理论
  4. 时代聚焦AI安全——可解释性
  5. jvm(4)-虚拟机性能监控与故障处理工具
  6. 英特尔回应安全漏洞问题:已在硬件层面解决
  7. pythonexcel计算横列总和-在python中,如何在字典中找到值的总和?每个键都有多个值...
  8. 自尊就是吃饱了撑的-莫言
  9. JS双引号替换单引号
  10. 关于拿到一个别人给你已经上架的App源代码时,首先需要干的几个事情
  11. python制作gif动图_PIL生成透明GIF动图
  12. ddos应急处理_DDoS攻击应急体系知多少?
  13. PLC控制系统接地要求
  14. latex 表格及标题居中
  15. C语言中task的用法,C++11中std::packaged_task的使用详解
  16. 教你DIY中文增强版Geexbox,且安装为硬盘版
  17. 苹果系统下载了python软件怎么卸载_mac怎么卸载pycharm
  18. 微信开发者工具黑屏/打不开解决办法
  19. uni-app前端解决跨域的问题
  20. Android Studio挂载第三方模拟器

热门文章

  1. JDK与JRE及其在Eclipse中的使用
  2. 如何从完整的文件路径中分离文件名和路径名?
  3. java改写weka中的算法_用Eclipse在Weka中嵌入新算法
  4. mysql配置管理器在哪_SQL Server 2008配置管理器在哪下载
  5. 国外学python的软件_全球开发者调查报告:IT人最想学习 Go 和 Python、美国开发者收入最高...
  6. 7-9 职工排序题 (20 分)
  7. java旺季机票_java-第四章-机票价格受到淡季旺季的影响,编写的小程序
  8. C语言入门题-是不是太胖了 (10分)
  9. php输出tab,设置Tab按钮列表 · DolphinPHP1.5.0完全开发手册-基于ThinkPHP5.1.41LTS的快速开发框架 · 看云...
  10. python用户界面导入图片_python学习笔记之11:图像用户界面