当前位置: 首页 > news >正文

LeetCode: Reverse Linked List II

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

这么一道小题做了一下午。。。真是太令我伤心了。

我的想法是 先找到开始反转的第一个元素的前面的那个元素,标记start。然后一边遍历 一边反转,最后前中后三段连在一起。

想法很简单,但是实现的很痛苦。。。

有一个特殊情况,如果要求反转的第一个元素是head,需要注意。因为在这种情况下,head是要改变的,其他时候head不需要改变。

所以可以在m==1的情况单独考虑,也可以给head之前加一个头结点,这样的话就不会有之前的问题。

我觉得第二种方法比较好。

n是最后一个元素的时候不存在特殊情况。。

 1 public static ListNode reverseBetween(ListNode head, int m, int n) {
 2         ListNode s = new ListNode(0);
 3         s.next = head;
 4         ListNode start = s;
 5         ListNode first = s;
 6         ListNode cur = s;
 7         ListNode next = s;
 8         ListNode nextnext = s;
 9         if (head == null) return head;
10         
11         for (int i=0; i<m-1; i++) {
12             start = start.next;
13         }
14         
15         first = start.next;
16         cur = first;
17         //cur cannot be null, because it is the first element to reverse
18 //        if (cur == null) return head;
19         next = cur.next;
20         
21         for (int j=m; j<n; j++) {
22             //next cannot be null, because if next is null 
23             //then j == length>=n and jump out of loop;
24             nextnext = next.next;
25             next.next = cur;
26             cur = next;
27             next = nextnext;    
28         }
29         
30         start.next = cur;
31         first.next = next;
32         
33         return s.next;
34     }

 

转载于:https://www.cnblogs.com/longhorn/p/3536032.html

相关文章:

  • oracle临时表(JDBC应用)
  • 笛卡尔叶形曲线所围图形的面积
  • app后端设计(7)-- 项目管理
  • Linq语言性能比较
  • Enabling Process Accounting on Linux HOWTO
  • IntelliJ IDEA 使用GitHub代码仓库保存自己的代码
  • 【转】Picasso – Android系统的图片下载和缓存类库
  • codeforces C. Cows and Sequence 解题报告
  • hdu1231(最大连续子序列)
  • Android Studio Gradle project refresh failed No such property classpath for class
  • 给hmailserver添加DKIM签名
  • SharePoint 2013 App 示例之图片墙
  • OAuth2.0 介绍
  • CCI_Q1.7
  • 服务器安全部署文档
  • 【跃迁之路】【641天】程序员高效学习方法论探索系列(实验阶段398-2018.11.14)...
  • bearychat的java client
  • CSS相对定位
  • Essential Studio for ASP.NET Web Forms 2017 v2,新增自定义树形网格工具栏
  • Java多态
  • php中curl和soap方式请求服务超时问题
  • sublime配置文件
  • Vue UI框架库开发介绍
  • vue-router的history模式发布配置
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 初探 Vue 生命周期和钩子函数
  • 服务器之间,相同帐号,实现免密钥登录
  • 复杂数据处理
  • 记录:CentOS7.2配置LNMP环境记录
  • 力扣(LeetCode)965
  • 前嗅ForeSpider采集配置界面介绍
  • 时间复杂度与空间复杂度分析
  • 使用Swoole加速Laravel(正式环境中)
  • 异常机制详解
  • 深度学习之轻量级神经网络在TWS蓝牙音频处理器上的部署
  • Salesforce和SAP Netweaver里数据库表的元数据设计
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • ​【已解决】npm install​卡主不动的情况
  • ​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型
  • ​LeetCode解法汇总1276. 不浪费原料的汉堡制作方案
  • ​Spring Boot 分片上传文件
  • #includecmath
  • (solr系列:一)使用tomcat部署solr服务
  • (区间dp) (经典例题) 石子合并
  • (四)Android布局类型(线性布局LinearLayout)
  • (总结)Linux下的暴力密码在线破解工具Hydra详解
  • .NET设计模式(7):创建型模式专题总结(Creational Pattern)
  • @data注解_一枚 架构师 也不会用的Lombok注解,相见恨晚
  • [《百万宝贝》观后]To be or not to be?
  • [Angular 基础] - 表单:响应式表单
  • [AX]AX2012 R2 出差申请和支出报告
  • [BZOJ1060][ZJOI2007]时态同步 树形dp
  • [C#] 基于 yield 语句的迭代器逻辑懒执行
  • [C++]unordered系列关联式容器
  • [html] 动态炫彩渐变背景