
python
wield_jjz
这个作者很懒,什么都没留下…
展开
-
菜鸟LeetCode-构造二叉树
构造二叉树106. 从中序与后序遍历序列构造二叉树思路:已知二叉树的中序遍历和后序遍历1、根据后序遍历,我们知道后序遍历列表中的最后一个元素一定是根节点2、由于二叉树中没有重复值,可以在中序遍历列表中找到根节点的位置(index)3、在中序遍历列表中,根节点左边的构成左子树,根节点右边的构成右子树4、确定左右子树在中序遍历和后序遍历中的边界5、递归构造左右子树6、返回根节点,结束自己写的代码# Definition for a binary tree node.# class Tre原创 2020-09-25 10:21:10 · 254 阅读 · 0 评论 -
菜鸟LeetCode-501. 二叉搜索树中的众数
501. 二叉搜索树中的众数给定一个有相同值的二叉搜索树(BST),找出 BST 中的所有众数(出现频率最高的元素)。假定 BST 有如下定义:结点左子树中所含结点的值小于等于当前结点的值 结点右子树中所含结点的值大于等于当前结点的值 左子树和右子树都是二叉搜索树 例如: 给定BST [1,null,2,2],1\2/2返回[2].第一种,直接用一个list存放中序遍历后的值# Definition for a binary tree node.# class TreeNod原创 2020-09-24 10:02:18 · 130 阅读 · 0 评论 -
菜鸟LeetCode-剑指 Offer 64. 求1+2+…+n
求 1+2+…+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。示例 1:输入: n = 3输出: 6示例 2:输入: n = 9输出: 45方法一:class Solution: def sumNums(self, n: int) -> int: return sum(range(n+1))方法二:逻辑符的短路效应A && B:当A不成立时,直接整个式子不成立,不原创 2020-09-19 19:38:10 · 136 阅读 · 0 评论 -
菜鸟LeetCode-查找
查找目录查找一、查找表考虑的基本数据结构第一类: 查找有无--set第二类: 查找对应关系(键值对应)--dict第三类: 改变映射关系--map二、相关练习349. 两个数组的交集350. 两个数组的交集 II349. 两个数组的交集349. 两个数组的交集349. 两个数组的交集349. 两个数组的交集349. 两个数组的交集一、查找表考虑的基本数据结构第一类: 查找有无–set元素’a’是否存在,通常用set:集合set只存储键,而不需要对应其相应的值。set中的键不允许重复第二类:原创 2020-08-25 23:21:08 · 835 阅读 · 0 评论 -
菜鸟LeetCode-动态规划
动态规划目录动态规划一、动态规划的思想二、动态规划适用的情况三、动态规划模板步骤四、相关练习300. 最长上升子序列674. 最长连续递增序列5. 最长回文子串516. 最长回文子序列72. 编辑距离198. 打家劫舍213. 打家劫舍 II一、动态规划的思想若要解一个给定问题,我们需要解其不同部分(即子问题),再根据子问题的解以得出原问题的解。动态规划往往用于优化递归问题,例如斐波那契数列,如果运用递归的方式来求解会重复计算很多相同的子问题,利用动态规划的思想可以减少计算量。动态规划法仅仅解决每个原创 2020-08-22 22:59:14 · 455 阅读 · 0 评论 -
菜鸟Leetcode-分治
分治一、分治的思想分:递归地将问题分解为各个的子问题(性质相同的、相互独立的子问题);治:将这些规模更小的子问题逐个击破;合:将已解决的子问题逐层合并,最终得出原问题的解二、分治法适用的情况原问题的计算复杂度随着问题的规模的增加而增加。原问题能够被分解成更小的子问题。子问题的结构和性质与原问题一样,并且相互独立,子问题之间不包含公共的子子问题。原问题分解出的子问题的解可以合并为该问题的解。三、相关练习169. 多数元素给定一个大小为 n 的数组,找到其中的多数元素。多数元素原创 2020-08-19 22:03:27 · 257 阅读 · 0 评论