递归算法总结
- 1、粗解递归算法
- 2、递归算法例题(不包含其他算法,纯递归)
- eg1:LC509 fibonacci数列(简单)
- (0)题目描述
- (1)思路分析
- (2)python代码
- eg2:LC206反转链表(简单)
- (1)题目描述
- (2)题解
- 双指针思路
- 递归思路
- 3、python语法总结(个人向)
- (1)总结一下类
1、粗解递归算法
2、递归算法例题(不包含其他算法,纯递归)
eg1:LC509 fibonacci数列(简单)
(0)题目描述
(1)思路分析
(2)python代码
class Solution:def fib(self, n: int) -> int:# 递归法if n == 0:return 0if n == 1:return 1m = self.fib(n-1) + self.fib(n-2)return m
eg2:LC206反转链表(简单)
(1)题目描述
(2)题解
双指针思路
def reverseList(self, head: Optional[ListNode]) -> Optional[ListNode]:# 双指针方法# 首先初始化双指针cur = head # 先保存头结点pre = None # 因为头节点的反转下一个节点就是空节点 # 之后就是一节一节的反转链表,直到cur指向Nullwhile cur != None:temp = cur.next # 如果反转链表的next指向的话,会使得正向的指针消失,所以要先保存一下 cur.next = pre # 反转pre = cur # 要先后移precur = temp # 后移动curreturn pre# 时间复杂度 O(n)# 空间复杂度O(1)
递归思路
完全基于双指针思路
class Solution:def reverseList(self, head: Optional[ListNode]) -> Optional[ListNode]:# 递归方法:(根据双指针方法写的)return self.reverse(head,None)def reverse(self, cur, pre): # 传入两个指针就把它们反转一下# 先写终止条件if cur == None:return pre# 写拆解temp = cur.nextcur.next = prereturn self.reverse(temp,cur)# 时间复杂度O(n)# 空间复杂度O(n)
3、python语法总结(个人向)
(1)总结一下类
抽个时间总结一下⭐️