
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 · 289 阅读 · 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 · 155 阅读 · 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 · 144 阅读 · 0 评论 -
菜鸟LeetCode-查找
查找 目录查找一、查找表考虑的基本数据结构第一类: 查找有无--set第二类: 查找对应关系(键值对应)--dict第三类: 改变映射关系--map二、相关练习349. 两个数组的交集350. 两个数组的交集 II349. 两个数组的交集349. 两个数组的交集349. 两个数组的交集349. 两个数组的交集349. 两个数组的交集 一、查找表 考虑的基本数据结构 第一类: 查找有无–set 元素’a’是否存在,通常用set:集合 set只存储键,而不需要对应其相应的值。 set中的键不允许重复 第二类:原创 2020-08-25 23:21:08 · 868 阅读 · 0 评论 -
菜鸟LeetCode-动态规划
动态规划 目录动态规划一、动态规划的思想二、动态规划适用的情况三、动态规划模板步骤四、相关练习300. 最长上升子序列674. 最长连续递增序列5. 最长回文子串516. 最长回文子序列72. 编辑距离198. 打家劫舍213. 打家劫舍 II 一、动态规划的思想 若要解一个给定问题,我们需要解其不同部分(即子问题),再根据子问题的解以得出原问题的解。动态规划往往用于优化递归问题,例如斐波那契数列,如果运用递归的方式来求解会重复计算很多相同的子问题,利用动态规划的思想可以减少计算量。 动态规划法仅仅解决每个原创 2020-08-22 22:59:14 · 474 阅读 · 0 评论 -
菜鸟Leetcode-分治
分治 一、分治的思想 分:递归地将问题分解为各个的子问题(性质相同的、相互独立的子问题); 治:将这些规模更小的子问题逐个击破; 合:将已解决的子问题逐层合并,最终得出原问题的解 二、分治法适用的情况 原问题的计算复杂度随着问题的规模的增加而增加。 原问题能够被分解成更小的子问题。 子问题的结构和性质与原问题一样,并且相互独立,子问题之间不包含公共的子子问题。 原问题分解出的子问题的解可以合并为该问题的解。 三、相关练习 169. 多数元素 给定一个大小为 n 的数组,找到其中的多数元素。多数元素原创 2020-08-19 22:03:27 · 272 阅读 · 0 评论