剑指 Offer 24. 反转链表

Offer 24

  • 题目描述:

常规解法

  • 本题的解法很常规,没有其他特别的坑,只需要将链表反转即可。
package com.walegarrett.offer;

/**
* @Author WaleGarrett
* @Date 2021/1/26 20:29
*/ /**
* 题目解析:
* 定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。
*/
public class Offer_24 {
public ListNode reverseList(ListNode head) {
ListNode pre = null;
ListNode current = head;
while(current != null){
ListNode temp = current.next;
current.next = pre;
pre = current;
current = temp;
} return pre;
}
}

递归解法

  • 递归解法需要注意的一个点就是递归的边界,也就是返回条件。
  • 图解
/**
* 解法二:递归解法,在回溯时需要设置next指针
*/
class Offer_24_1 {
public ListNode reverseList(ListNode head) {
return dfs(head, null);
}
ListNode dfs(ListNode current, ListNode pre){
if(current == null)
return pre;//这里返回的有点难以理解,这里其实是达到原始链表尾部就返回最后的那个元素。这个元素作为新链表的头指针。
ListNode result = dfs(current.next, current);
current.next = pre;
return result;
}
}

最新文章

  1. C#开发微信门户及应用(29)--微信个性化菜单的实现
  2. 【zz】matlab 求差集
  3. Django 部署
  4. ACM/ICPC 之 昂贵的聘礼-最短路解法(POJ1062)
  5. python Django 学习笔记(三)—— 模版的使用
  6. keystone之预备知识点
  7. table tr分离并加圆角和阴影
  8. 跟我一起学extjs5(05--主界面上增加顶部和底部区域)
  9. JavaScript高级程序设计42.pdf
  10. LibCurl编程手册以及代码实例
  11. ajax加php实现简单的投票效果
  12. poj2828 Buy ticket
  13. WPF(C#) 矩阵拖动、矩阵动画、边缘展开动画处理。
  14. react native一键分享功能实现&原理和注意点(支持微信、qq、新浪微博等)
  15. html头部规范书写
  16. Python基础知识4--数据结构(树)
  17. python 包和模块
  18. 给Win32 GUI程序增加控制台窗口的方法
  19. c#类 对象 构造函数 析构函数——面向对象
  20. 测试HANA的真实案例

热门文章

  1. codeforces632D. Longest Subsequence (最小公倍数)
  2. Codeforces Round #666 (Div. 2) B. Power Sequence (枚举)
  3. 2019 ICPC Asia Taipei-Hsinchu Regional Problem K Length of Bundle Rope (贪心,优先队列)
  4. OpenStack Train版-13.安装块存储服务cinder(控制节点)
  5. 3.安装可视化工具kibana
  6. c++大整数
  7. codeforces 7D
  8. 部署gitlab-01
  9. μC/OS-III---I笔记4---软件定时器
  10. CSS pseudo classes All In One