
刷题
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 评论 -
菜鸟Leetcode-Day8-面试题58 - II. 左旋转字符串
面试题58 - II. 左旋转字符串难度:简单题目字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。示例 1:输入: s = “abcdefg”, k = 2输出: “cdefgab”示例 2:输入: s =“lrloseum...原创 2020-04-14 17:41:44 · 201 阅读 · 0 评论 -
菜鸟Leetcode-Day7-445. 两数相加 II
445. 两数相加 II难度:中等题目给你两个 非空 链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。你可以假设除了数字 0 之外,这两个数字都不会以零开头。进阶: 如果输入链表不能修改该如何处理?换句话说,你不能对列表中的节点进行翻转。示例:输入:(7 -> 2 -> 4 -> 3) + ...原创 2020-04-14 16:14:38 · 211 阅读 · 0 评论 -
菜鸟Leetcode-Day6-349. 两个数组的交集
349. 两个数组的交集难度:简单题目给定两个数组,编写一个函数来计算它们的交集。示例 1:输入: nums1 = [1,2,2,1], nums2 = [2,2] 输出: [2]示例 2:输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4] 输出: [9,4]思路自己想的:先去除两个数组中的重复数字,然后再双重循环找到交集。代码class...原创 2020-04-14 12:11:32 · 156 阅读 · 0 评论 -
菜鸟Leetcode-Day5-999. 可以被一步捕获的棋子数
目录999. 可以被一步捕获的棋子数题目示例提示思路代码999. 可以被一步捕获的棋子数题目难度:简单在一个 8 x 8 的棋盘上,有一个白色的车(Rook),用字符 ‘R’表示。棋盘上还可能存在空方块,白色的象(Bishop)以及黑色的卒(pawn),分别用字符 ‘.’,‘B’ 和 ‘p’表示。不难看出,大写字符表示的是白棋,小写字符表示的是黑棋。车按国际象棋中的规则移动。东,西...原创 2020-04-13 17:23:29 · 255 阅读 · 0 评论 -
菜鸟Leetcode-Day4-322. 零钱兑换
322. 零钱兑换问题描述难度:中等给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。示例 1:输入: coins = [1, 2, 5], amount = 11输出: 3解释: 11 = 5 + 5 + 1示例 2:输入: coins = [2], amount ...原创 2020-03-08 23:08:38 · 116 阅读 · 0 评论 -
菜鸟Leetcode-Day3-面试题59 - II. 队列的最大值
面试题59 - II. 队列的最大值问题描述难度:中等请定义一个队列并实现函数 max_value 得到队列里的最大值,要求函数max_value、push_back 和 pop_front 的均摊时间复杂度都是O(1)。若队列为空,pop_front 和 max_value 需要返回 -1示例 1:输入:[“MaxQueue”,“push_back”,“push_back”,“ma...原创 2020-03-07 23:02:37 · 165 阅读 · 0 评论 -
菜鸟Leetcode-Day2-面试题57 - II. 和为s的连续正数序列
面试题57 - II. 和为s的连续正数序列问题描述难度:简单输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。示例 1:输入:target = 9输出:[[2,3,4],[4,5]]示例 2:输入:target = 15输出:[[1,2,3,4,5],[4,5,6],[7...原创 2020-03-06 23:31:34 · 163 阅读 · 0 评论 -
菜鸟Leetcode-Day1-1103. 分糖果 II
#1103. 分糖果 II##问题描述难度:简单排排坐,分糖果。 我们买了一些糖果 candies,打算把它们分给排好队的 n = num_people 个小朋友。 给第一个小朋友1颗糖果,第二个小朋友2颗,依此类推,直到给最后一个小朋友 n 颗糖果。 然后,我们再回到队伍的起点,给第一个小朋友 n + 1颗糖果,第二个小朋友 n + 2 颗,依此类推,直到给最后一个小朋友 2 * n 颗...原创 2020-03-05 22:27:00 · 148 阅读 · 0 评论