
递归
一叶知秋的BLOG
没有过不去的黑夜,也没有等不到的明天。乾坤未定,你我皆是黑马。
展开
-
python 合并两个排序的链表(递归解法)
输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。 示例1: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4 限制: 0 <= 链表长度 <= 1000 题解 # Definition for singly-linked list. # class ListNode: # def __init__(self, x): # self.val = x #原创 2021-12-27 08:00:00 · 536 阅读 · 0 评论 -
python 递归乘法
递归乘法 递归乘法。 写一个递归函数,不使用 * 运算符, 实现两个正整数的相乘。可以使用加号、减号、位移,但要吝啬一些。 示例1: 输入:A = 1, B = 10 输出:10 示例2: 输入:A = 3, B = 4 输出:12 题解 递归解法 class Solution: """ 解题思路: 递归法 1. A * B 可分为两种情况讨论, 以A为例: 1.当A为偶数时:可分解为 A // 2 * B + A // 2 * B原创 2021-12-21 08:00:00 · 580 阅读 · 0 评论 -
python 数值的整数次方
解决数值的整数次方问题 实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,xn)。 不得使用库函数,同时不需要考虑大数问题。 示例 1: 输入:x = 2.00000, n = 10 输出:1024.00000 示例 2: 输入:x = 2.10000, n = 3 输出:9.26100 示例 3: 输入:x = 2.00000, n = -2 输出:0.25000 解释:2-2 = 1/22 = 1/4 = 0.25 提示: -100.0 < x < 100.0 -2原创 2021-12-20 08:00:00 · 1770 阅读 · 0 评论 -
python 反转链表
反转链表 定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 提供两种解题思路 # Definition for singly-linked list. # class ListNode: # def __init__(self, x): # self.val = x # se原创 2021-12-19 08:00:00 · 531 阅读 · 0 评论 -
python 三步问题
三步问题 三步问题。有个小孩正在上楼梯,楼梯有n阶台阶, 小孩一次可以上1阶、2阶或3阶。实现一种方法, 计算小孩有多少种上楼梯的方式。结果可能很大, 你需要对结果模1000000007。 示例1: 输入:n = 3 输出:4 说明: 有四种走法 示例2: 输入:n = 5 输出:13 提示: n范围在[1, 1000000]之间 提供两种题解 class Solution: """ 解题思路一:递归解法 1.递推公式为 f(n) = f(n-1) + f(原创 2021-12-18 08:00:00 · 391 阅读 · 0 评论 -
python 从尾到头打印链表
从尾到头打印链表 输入一个链表的头节点,从尾到头反过来返回每个节点的值 (用数组返回)。 示例 1: 输入:head = [1,3,2] 输出:[2,3,1] 提供三种题解 # Definition for singly-linked list. # class ListNode: # def __init__(self, x): # self.val = x # self.next = None class Solution: """ 解原创 2021-12-17 08:00:00 · 395 阅读 · 0 评论 -
python 青蛙跳台阶问题
青蛙跳台阶 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。 答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。 示例 1: 输入:n = 2 输出:2 示例 2: 输入:n = 7 输出:21 示例 3: 输入:n = 0 输出:1 题解 class Solution: """ 解题思路: 递归算法 1.当台阶数为n对应的走法有f(n)种: n-->f(n), n-1--&原创 2021-12-16 08:00:00 · 1600 阅读 · 0 评论 -
python 斐波那契数列
斐波那契数列 写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。斐波那契数列的定义如下: F(0) = 0, F(1) = 1 F(N) = F(N - 1) + F(N - 2), 其中 N > 1. 斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。 答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。 示例 1: 输入:n = 2 输出:1 示例 2: 输入:n = 5 输出原创 2021-12-15 08:00:00 · 1763 阅读 · 0 评论 -
解决递归中的重复计算问题
一、重叠子问题 斐波那契数列没有求最值的问题,因此严格来说它不是最优解问题,当然也就不是动态规划问题。但它能帮助你理解什么是重叠子问题。首先,它的数学形式即递归表达是这样的: def Fibonacci(n): if (n == 0 or n == 1): return n if (n > 1): return Fibonacci(n - 1) + Fibonacci(n - 2) def main(): result = Fibonacci原创 2021-12-14 08:00:00 · 1397 阅读 · 0 评论