【问题描述】[中等]

定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。示例:输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL限制:0 <= 节点个数 <= 5000

【解答思路】

1. 双指针/头插法





时间复杂度:O(N) 空间复杂度:O(1)

class Solution {public ListNode reverseList(ListNode head) {//申请节点,pre和 cur,pre指向nullListNode pre = null;ListNode cur = head;ListNode tmp = null;while(cur!=null) {//记录当前节点的下一个节点tmp = cur.next;//然后将当前节点指向precur.next = pre;//pre和cur节点都前进一位pre = cur;cur = tmp;}return pre;}
}
2. 递归





时间复杂度:O(N) 空间复杂度:O(1)

class Solution {public ListNode reverseList(ListNode head) {//递归终止条件是当前为空,或者下一个节点为空if(head==null || head.next==null) {return head;}//这里的cur就是最后一个节点ListNode cur = reverseList(head.next);//这里请配合动画演示理解//如果链表是 1->2->3->4->5,那么此时的cur就是5//而head是4,head的下一个是5,下下一个是空//所以head.next.next 就是5->4head.next.next = head;//防止链表循环,需要将head.next设置为空head.next = null;//每层递归函数都返回cur,也就是最后一个节点return cur;}
}

【总结】

1.链表题目 递归和双指针思想非常重要
2. 链表题目一定要画图

转载:https://leetcode-cn.com/problems/fan-zhuan-lian-biao-lcof/solution/ru-guo-ni-kan-wan-ping-lun-he-ti-jie-huan-you-wen-/

链接:https://leetcode-cn.com/problems/fan-zhuan-lian-biao-lcof/solution/dong-hua-yan-shi-duo-chong-jie-fa-206-fan-zhuan-li/

[剑指offer][JAVA]面试题第[24]题[反转链表][递归][双指针][头插法]相关推荐

  1. [剑指offer][JAVA]面试题第[07]题[重建二叉树][递归]

    [问题描述][中等] 输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如,给出前序遍历 preorder = [3,9,20,15,7] ...

  2. [剑指offer][JAVA]面试题第[18]题[删除链表的节点]

    [问题描述][中等] 给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点.返回删除后的链表的头节点.注意:此题对比原题有改动示例 1:输入: head = [4,5,1,9], val ...

  3. [剑指offer][JAVA]面试题[第23题][合并K个排序链表][分治][优先队列]

    [问题描述]23.合并K个排序链表 合并 k 个排序链表,返回合并后的排序链表.请分析和描述算法的复杂度. 示例: 输入: [1->4->5,1->3->4,2->6 ] ...

  4. [剑指offer][JAVA]面试题第[31]题[栈的压入、弹出序列][栈]

    [问题描述][中等] 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4 ...

  5. [剑指offer][JAVA]面试题第[39]题[数组中出现次数超过一半的数字][HashMap][摩尔投票法]

    [问题描述][简单] 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.你可以假设数组是非空的,并且给定的数组总是存在多数元素.示例 1:输入: [1, 2, 3, 2, 2, 2, 5, ...

  6. [剑指offer][JAVA]面试题第[32-3]题[从上到下打印二叉树 ][BFS]

    [问题描述][中等] 请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推. 例如: 给定二叉树: [3 ...

  7. [剑指offer][JAVA]面试题第[32-2]题[从上到下打印二叉树][BFS]

    [问题描述][简单] 从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行.例如: 给定二叉树: [3,9,20,null,null,15,7],3/ \9 20/ \15 7 ...

  8. [剑指offer][JAVA]面试题第[32-1]题[从上到下打印二叉树][BFS]

    [问题描述][中等] 从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印. 例如: 给定二叉树: [3,9,20,null,null,15,7],3/ \9 20/ \15 7 返回: ...

  9. [剑指offer][JAVA]面试题第[30]题[包含min函数的栈][双栈辅助栈][单栈]

    [问题描述][中等] 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min.push 及 pop 的时间复杂度都是 O(1).示例:MinStack min ...

最新文章

  1. 修改element中v-loading的自定义图片
  2. nginx假死导致的问题回顾
  3. Detectron-MaskRCnn: 用于抠图的FCNN
  4. Java命令行界面(第7部分):JCommander
  5. jQuery中使用data()方法读取HTML5自定义属性data-*实例
  6. 最新二开版漫画小说听书三合一完整源码/整合免签接口/搭建教程/带采集接口
  7. 面向对象软件测试开题报告,软件测试开题报告范文.doc
  8. PDF怎么转CAD?分享两种转换方法
  9. 网络安全技术复习资料
  10. [Mac]制作MacOs Mojave系统盘教程 (全新安装 MacOs系统)
  11. NTRIP传输相关,上篇SNIP NTRIP Caster学习笔记扫盲补充
  12. 为了保护您的视力,请对电脑作如下设置
  13. Illegal command:debug错误
  14. 未明学院数据分析报告:谁才是淘宝沙发界最受瞩目的明星店铺?大数据分析助你做“星探”!
  15. MySQL学习记录(导入Excel表到数据库,并筛选条件输出)
  16. 微信小程序(八)实战——加载图片images
  17. 破壳而出的琉璃之鸟汉化 QA
  18. php搜索银行所在支行,如何查询怎么查建设银行所属支行?
  19. java基于springboot+vue的校园跑腿系统 nodejs前后端分离
  20. 线性代数基本知识-思维导图

热门文章

  1. 关于逐项作用函数的用法
  2. 前端测试框架 jasmine 的使用
  3. shape的简单用法
  4. 转: Jenkins+Gradle实现android开发持续集成、打包
  5. SChema中group指示器的使用
  6. glomosim仿真的运行过程
  7. sql 把特定数据排在最前面
  8. ConcurrentHashMap底层原理?
  9. jmap报错unknown CollectedHeap type : class sun.jvm.hotspot.gc_interface.CollectedHeap
  10. C# IIS ManagementException: 访问遭到拒绝