从小白开始刷算法 递归篇 leetcode.206

简介: 从小白开始刷算法 递归篇 leetcode.206

206. 反转链表


斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:


F(0) = 0,F(1) = 1

F(n) = F(n - 1) + F(n - 2),其中 n > 1

给定 n ,请计算 F(n) 。


示例 1:


输入:n = 2

输出:1

解释:F(2) = F(1) + F(0) = 1 + 0 = 1

示例 2:


输入:n = 3

输出:2

解释:F(3) = F(2) + F(1) = 1 + 1 = 2

示例 3:


输入:n = 4

输出:3

解释:F(4) = F(3) + F(2) = 2 + 1 = 3


题目来源:力扣(LeetCode)


递归思路


能否写出:写出,但需要思路。

时间:20多分钟想+10分钟看思路

思路:

建议画图,也推荐看 b站up主 爱学习的饲养员 对这题的视频讲解,因为这题用视频理解比文字理解要好,而且up主的对这题的讲解也十分不错。

首先判断链表是否为空或只有一个节点,如果是,则直接返回该节点。


  1. 递归调用reverseList函数,传入当前节点的下一个节点作为参数,得到反转后的链表头节点。
  2. 将当前节点的下一个节点的next指针指向当前节点,实现反转。
  3. 将当前节点的next指针设为null,断开与下一个节点的连接,避免形成循环。
  4. 返回反转后的链表头
// 仅是我的思路代码,leetcode上大神更厉害
class Solution {
    public ListNode reverseList(ListNode head) {
        // 基本情况:链表为空或只有一个节点
        if (head == null || head.next == null) {
            return head;
        }
        ListNode newHead = reverseList(head.next);  // 递归反转子链表
        head.next.next = head;  // 反转指针方向
        head.next = null;
        return newHead;  // 返回新的头节点
    }
}

时间复杂度: O(n)

空间复杂度:O(n)


其他思路:


从小白开始刷算法 ListNode 链表篇 leetcode.206

相关文章
|
1月前
|
算法
Leetcode 初级算法 --- 数组篇
Leetcode 初级算法 --- 数组篇
37 0
|
19天前
|
算法
每日一道算法题(Leetcode 20)
每日一道算法题(Leetcode 20)
21 2
|
25天前
|
算法 搜索推荐 Shell
数据结构与算法学习十二:希尔排序、快速排序(递归、好理解)、归并排序(递归、难理解)
这篇文章介绍了希尔排序、快速排序和归并排序三种排序算法的基本概念、实现思路、代码实现及其测试结果。
16 1
|
25天前
|
算法 定位技术
数据结构与算法学习九:学习递归。递归的经典实例:打印问题、阶乘问题、递归-迷宫问题、八皇后问题
本文详细介绍了递归的概念、重要规则、形式,并展示了递归在解决打印问题、阶乘问题、迷宫问题和八皇后问题等经典实例中的应用。
30 0
|
3月前
|
算法
【算法】递归、搜索与回溯——汉诺塔
【算法】递归、搜索与回溯——汉诺塔
|
3月前
|
算法 Java
LeetCode经典算法题:矩阵中省份数量经典题目+三角形最大周长java多种解法详解
LeetCode经典算法题:矩阵中省份数量经典题目+三角形最大周长java多种解法详解
49 6
|
3月前
|
人工智能 算法 Java
LeetCode经典算法题:井字游戏+优势洗牌+Dota2参议院java解法
LeetCode经典算法题:井字游戏+优势洗牌+Dota2参议院java解法
48 1
|
3月前
|
存储 算法 Java
LeetCode经典算法题:预测赢家+香槟塔java解法
LeetCode经典算法题:预测赢家+香槟塔java解法
50 1
|
3月前
|
算法
【算法】递归总结:循环与递归的区别?递归与深搜的关系?
【算法】递归总结:循环与递归的区别?递归与深搜的关系?
|
3月前
|
算法
【算法】递归、搜索与回溯——简介
【算法】递归、搜索与回溯——简介