递归算法
liubeiandcaocao
这个作者很懒,什么都没留下…
展开
-
剑指offer51 数组中的逆序对数量,归并排序的使用
class Solution: def reversePairs(self, nums: List[int]) -> int: if not nums: return 0 def mergesort(s,e): if s==e: #递归终止条件:只剩下1个元素时,一定是有序的 return m = s+(e-s)//2 mergeso原创 2020-09-07 10:48:10 · 164 阅读 · 0 评论 -
剑指offer36 二叉搜索树与双向链表的转换 递归的应用,主要是改中序遍历打印的内容,以及对链表的学习
这个二叉搜索树转化为双向循环链表。链表中的每个节点都有一个前驱和后继指针。对于双向循环链表,第一个节点的前驱是最后一个节点,最后一个节点的后继是第一个节点。"""# Definition for a Node.class Node: def __init__(self, val, left=None, right=None): self.val = val self.left = left self.right = right"""clas原创 2020-07-22 22:19:49 · 91 阅读 · 0 评论 -
剑指offer34 二叉树中和为某一值的路径 递归+迭代
# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution: def pathSum(self, root: TreeNode, sum: int) -> List[List[int]]:#方法一 .原创 2020-07-20 14:59:59 · 147 阅读 · 0 评论 -
剑指offer27 二叉树的镜像 递归+迭代
设计一个函数,输入一个二叉树,输出其镜像root=[4,2,7,1,3,6,9]输出[4,7,2,9,6,3,1]递归+迭代# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution: def mir原创 2020-07-19 16:58:28 · 120 阅读 · 0 评论 -
剑指offer26 树的子结构 递归学习
# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution: def isSubStructure(self, A: TreeNode, B: TreeNode) -> bool:#方法 递归 .原创 2020-07-19 15:36:27 · 91 阅读 · 0 评论 -
leetcode(21)合并两个有序链表-python
将两个排序好的链表,合在一起。将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4...原创 2019-11-21 20:52:07 · 141 阅读 · 0 评论 -
剑指offer 剪绳子
给定长度为n的绳子,剪成m段,具体m为多少就是算法要考虑的,反正m>1,即至少要剪成2段;使剪成的每一段的长度乘积最大思考:对于n<=3,至少要剪成2段,则长度必然缩小;即长度为2,1+1=2,11=1;长度为3,1+2=3,12=3;但对于长度4就不一定,1+3,2+2都行;使用字典,记忆化搜索class Solution(object): def cuttingRope(self,n): if n<=3: return n-1 memo = {} def c原创 2020-06-27 12:55:45 · 104 阅读 · 0 评论 -
二叉树中的最大路径和 递归的好例子
本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。该题分为两部分,一是为每个node节点定义一个函数求贡献值,二是上一个节点的值为本身的值+左右两个节点的最大贡献值,递归回溯class Solution: def __init__(self): self.maxSum = float("-inf") def maxPathSum(self, root): def getmax(node):原创 2020-06-23 21:34:34 · 140 阅读 · 0 评论