在O(n) 时间复杂度,O(1)空间复杂度内反转单链表

简介:

在LeetCode中看到判断回文的程序:https://leetcode.com/problems/palindrome-linked-list/

里面用单链表来存储数据,先反转前半部分的单链表,然后分别从 表头 和 中间链表位置处 开始比较元素。

 

反转单链表的代码如下:

复制代码
 1      private ListNode reverseList(ListNode head, int length){
 2          if(head == null)  3 return null;  4  ListNode currentNode, preNode;  5 currentNode = preNode = head;  6 ListNode nextNode = head.next;  7 head.next = null;  8 for(int i = 1; i < length; i++){  9 if(nextNode != null){ 10 currentNode = nextNode; 11 nextNode = nextNode.next; 12 currentNode.next = preNode; 13 preNode = currentNode; 14  } 15  } 16 return currentNode; 17 }
本文转自hapjin博客园博客,原文链接:http://www.cnblogs.com/hapjin/,如需转载请自行联系原作者
相关文章
|
机器学习/深度学习 人工智能 文字识别
Python常用验证码标注和识别(需求分析和实现思路)
Python常用验证码标注和识别(需求分析和实现思路)
285 0
|
存储 NoSQL 网络协议
主从复制,Could not connect to Redis at 127.0.0.1:6380: Connection refusednot connected> exit,1.主从模式如何指
主从复制,Could not connect to Redis at 127.0.0.1:6380: Connection refusednot connected> exit,1.主从模式如何指
|
小程序 开发者 Windows
【微信小程序】微信开发者工具 内容错误 pages/cart/cart.json: [“usingComonent“][“van-card“]: “@vant/weapp/card/indx“ 未找到
【微信小程序】微信开发者工具 内容错误 pages/cart/cart.json: [“usingComonent“][“van-card“]: “@vant/weapp/card/indx“ 未找到
328 0
|
存储 Java 编译器
Java异常到底是个啥——一次异常引发的思考
这篇文章主要通过三个部分阐释Java异常 - Java中异常的分类,异常的处理机制 - 异常的处理规范和实战,如何利用Springboot框架处理异常 - 从JVM的角度分析异常机制,包括`try-catch`, `try-finally`, `try-with-resource`的字节码分析
147 0
Java异常到底是个啥——一次异常引发的思考
|
Cloud Native
【刷题日记】70. 爬楼梯
本次刷题日记的第 10 篇,力扣题为:70. 爬楼梯 ,简单
126 0
|
Java 数据库 数据安全/隐私保护
推荐一款 IDEA 生成代码神器,写代码再也不用加班了!
Easycode是idea的一个插件,可以直接对数据的表生成entity,controller,service,dao,mapper,无需任何编码,简单而强大。
|
存储 缓存 算法
手撕数据结构与算法-链表
链表也是线性表中的一种,数组是线性表中的顺序结构,而这次说的链表是线性表的链式存储结构,它在内存中是非连续、非顺序性的数据结构,由若干个节点组成。它每个节点中都会存储数据和下一个节点的地址,存储数据的叫做数据域,存储地址的叫做指针域。指针分为前驱指针、后继指针,分别用来记录前一个节点和后一个节点的位置。
142 0
|
4天前
|
存储 人工智能 安全
AI 越智能,数据越危险?
阿里云提供AI全栈安全能力,为客户构建全链路数据保护体系,让企业敢用、能用、放心用