![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LeetCode刷题
oyall520
这个作者很懒,什么都没留下…
展开
-
把数字翻译成字符串 VS 解码方法
1. 题目描述给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。示例 1:输入: 12258输出: 5解释: 12258有5种不同的翻译,分别是"bccfi", "bwfi", "bczi", "mcfi"和"mzi"提示: 0 <= num < 2^312. 解题思路动态规划还没学明白,先想到的是递原创 2020-06-09 17:04:58 · 544 阅读 · 0 评论 -
【LeetCode 128】最长连续序列——Python解决
1. 题目描述给定一个未排序的整数数组,找出最长连续序列的长度。要求算法的时间复杂度为 O(n)。示例:输入: [100, 4, 200, 1, 3, 2]输出: 4解释: 最长连续序列是 [1, 2, 3, 4]。它的长度为 4。2. 思路(1)先去重,将数组转变成集合(可以直接使用set(nums),或者遍历数组,将每一个元素添加到集合Set中)(2)遍历整个集合中的数x,若x-1不在集合里,说明x是一个新的序列起点,然后就看y = x+1, x+2, x+3……是否在集合里。当y不原创 2020-06-06 11:57:27 · 922 阅读 · 0 评论 -
同构字符串和单词规律问题
一、【LeetCode 205】同构字符串1. 题目描述给定两个字符串 s 和 t,判断它们是否是同构的。如果 s 中的字符可以被替换得到 t ,那么这两个字符串是同构的。所有出现的字符都必须用另一个字符替换,同时保留字符的顺序。两个字符不能映射到同一个字符上,但字符可以映射自己本身。示例 1:输入: s = "egg", t = "add"输出: true示例 2:输入: s = "foo", t = "bar"输出: false示例 3:输入: s = "paper", t原创 2020-05-23 17:15:32 · 313 阅读 · 0 评论 -
堆排序——最小的k个数(python)
一. 题目描述输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。示例 1:输入:arr = [3,2,1], k = 2输出:[1,2] 或者 [2,1]示例 2:输入:arr = [0,1,2,1], k = 1输出:[0]限制:0 <= k <= arr.length &l...原创 2020-04-30 19:57:18 · 1259 阅读 · 0 评论 -
零钱兑换和完全平方数问题
一、【LeetCode 322】零钱兑换1. 题目描述给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。示例 1:输入: coins = [1, 2, 5], amount = 11输出: 3 解释: 11 = 5 + 5 + 1示例 2:输入: coins = [2...原创 2020-04-13 10:38:45 · 119 阅读 · 0 评论 -
回文子序列和回文子串问题
目录一、【LeetCode 516】最长回文子序列1. 问题描述2. 解题思路3. 代码二、【LeetCode 647】回文子串1. 题目描述2. 第一种方法——动态规划3. 第二种方法——中心扩展法三、【LeetCode 5】最长回文子串1. 题目描述2. 第一种方法——动态规划3. 第二种方法——中心扩展法一、【LeetCode 516】最长回文子序列1. 问题描述给定一个字符串s,找到...原创 2020-04-12 23:04:14 · 1568 阅读 · 0 评论 -
【LeetCode 1143】最长公共子序列——Python解决
目录1. 题目描述2. 分析3. 动态规划(基础版)4. 动态规划(进阶版)1. 题目描述给定两个字符串 text1 和 text2,返回这两个字符串的最长公共子序列。一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。例如,“ace” 是 “abcde” 的子序列,但 “aec” 不是 “abcd...原创 2020-04-09 21:46:23 · 925 阅读 · 0 评论 -
Python 动态规划解决不同路径问题
目录一、【LeetCode 62】不同路径1. 题目描述2. 解题思路3. 代码二、【LeetCode 63】不同路径II1. 题目描述2. 解题思路3. 代码三、【LeetCode 64】最小路径和1. 题目描述2. 解题思路3. 代码一、【LeetCode 62】不同路径1. 题目描述一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能...原创 2020-04-09 21:28:10 · 2193 阅读 · 0 评论 -
【LeetCode 416】分割等和子集——Python解决
1. 题目描述给定一个只包含正整数的非空数组。是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。注意:每个数组中的元素不会超过 100数组的大小不会超过 200示例 1:输入: [1, 5, 11, 5]输出: true解释: 数组可以分割成 [1, 5, 5] 和 [11]. 示例 2:输入: [1, 2, 3, 5]输出: false解释: 数组不...原创 2020-04-09 10:06:22 · 1106 阅读 · 0 评论 -
0-1背包问题的Python实现及其优化
1. 概述有一个背包,它的容量为C (Capacity)。现在有n种不同的物品,编号为0…n-1,其中每一件物品的重量为w(i),价值为v(i)。 问可以向这个背包中盛放哪些物品,使得在不超过背包容量的基础上,物品的总价值最大。暴力解法: 每一件物品都可以放进背包,也可以不放进背包。时间复杂度为:O((2^n)*n)另辟蹊径: F(n, C)考虑将n个物品放进容量为C的背包,使得价值最大。一...原创 2020-04-08 10:57:43 · 1014 阅读 · 0 评论 -
【LeetCode 198】打家劫舍——Python解决
1. 题目描述你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例 1:输入: [1,2,3,1]输出: 4解释: 偷窃 1 号房屋 (金额 = 1) ,...原创 2020-04-06 18:44:58 · 1228 阅读 · 0 评论 -
【LeetCode 343】整数拆分——Python解决
1. 题目描述给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。示例 1:输入: 2输出: 1解释: 2 = 1 + 1, 1 × 1 = 1。示例 2:输入: 10输出: 36解释: 10 = 3 + 3 + 4, 3 × 3 × 4 = 36。说明: 你可以假设 n 不小于 2 且不大于 58。2. 分析将正整数...原创 2020-04-06 11:35:54 · 2236 阅读 · 0 评论 -
【LeetCode 17】电话号码的字母组合
1. 题目描述给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:"23"输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].说明:尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。2. 第一种方法首...原创 2020-04-04 19:38:22 · 118 阅读 · 0 评论 -
二叉树的修剪问题
一、【LeetCode 814】二叉树剪枝1. 题目描述给定二叉树根结点 root ,此外树的每个结点的值要么是 0,要么是 1。返回移除了所有不包含 1 的子树的原二叉树。( 节点 X 的子树为 X 本身,以及所有 X 的后代。)示例1:输入: [1,null,0,0,1]输出: [1,null,0,null,1]解释:只有红色节点满足条件“所有不包含 1 的子树”。右...原创 2020-03-23 22:43:21 · 982 阅读 · 0 评论 -
【LeetCode 662】二叉树最大宽度
1. 题目描述给定一个二叉树,编写一个函数来获取这个树的最大宽度。树的宽度是所有层中的最大宽度。这个二叉树与满二叉树(full binary tree)结构相同,但一些节点为空。每一层的宽度被定义为两个端点(该层最左和最右的非空节点,两端点间的null节点也计入长度)之间的长度。示例 1:输入: 1 / \ 3 2 / \ \ ...原创 2020-03-22 23:00:48 · 123 阅读 · 0 评论 -
【LeetCode 1382】将二叉搜索树变平衡
1. 题目描述给你一棵二叉搜索树,请你返回一棵 平衡后 的二叉搜索树,新生成的树应该与原来的树有着相同的节点值。如果一棵二叉搜索树中,每个节点的两棵子树高度差不超过 1 ,我们就称这棵二叉搜索树是 平衡的 。如果有多种构造方法,请你返回任意一种。示例:输入:root = [1,null,2,null,3,null,4,null,null]输出:[2,1,3,null,null,nul...原创 2020-03-21 21:09:33 · 575 阅读 · 0 评论 -
【LeetCode 938】二叉搜索树的范围和
1. 题目描述给定二叉搜索树的根结点 root,返回 L 和 R(含)之间的所有结点的值的和。二叉搜索树保证具有唯一的值。示例 1:输入:root = [10,5,15,3,7,null,18], L = 7, R = 15输出:32示例 2:输入:root = [10,5,15,3,7,13,18,1,null,6], L = 6, R = 10输出:23提示:树中的结点...原创 2020-03-20 21:06:21 · 131 阅读 · 0 评论 -
【LeetCode 543】二叉树的直径
1. 题目描述给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点。示例 :给定二叉树 1 / \ 2 3 / \ 4 5 返回 3, 它的长度是路径 [4,2,1,3] 或者 [5,2,1,3]。注意: 两结点之间的路径长度是以它们之间边的数目表...原创 2020-03-19 15:52:46 · 79 阅读 · 0 评论 -
【LeetCode 538】把二叉搜索树转换为累加树
1. 题目描述给定一个二叉搜索树(Binary Search Tree),把它转换成为累加树(Greater Tree),使得每个节点的值是原来的节点值加上所有大于它的节点值之和。例如:输入: 原始二叉搜索树: 5 / \ 2 13输出: 转换为累加树: 18 / \ 20 ...原创 2020-03-19 15:31:01 · 83 阅读 · 0 评论 -
【LeetCode 572】另一个树的子树
1. 题目描述给定两个非空二叉树 s 和 t,检验 s 中是否包含和 t 具有相同结构和节点值的子树。s 的一个子树包括 s 的一个节点和这个节点的所有子孙。s 也可以看做它自身的一棵子树。示例 1:给定的树 s: 3 / \ 4 5 / \ 1 2给定的树 t: 4 / \ 1 2返回 true,因为 t 与 s 的一个子树拥...原创 2020-03-19 14:52:42 · 94 阅读 · 0 评论 -
【LeetCode 563】二叉树的坡度
1. 题目描述给定一个二叉树,计算整个树的坡度。一个树的节点的坡度定义即为,该节点左子树的结点之和和右子树结点之和的差的绝对值。空结点的的坡度是0。整个树的坡度就是其所有节点的坡度之和。示例:输入: 1 / \ 2 3输出: 1解释: 结点的坡度 2 : 0结点的坡度 3 : 0结点的坡度 1 : |2-3| = 1树...原创 2020-03-19 12:22:58 · 158 阅读 · 0 评论 -
【LeetCode 530】二叉搜索树的最小绝对差
1. 题目描述给你一棵所有节点为非负值的二叉搜索树,请你计算树中任意两节点的差的绝对值的最小值。示例:输入: 1 \ 3 / 2输出: 1解释:最小绝对差为 1,其中 2 和 1 的差的绝对值为 1(或者 2 和 3)提示:树中至少有 2 个节点。本题与 783 https://leetcode-cn.com/problems/minimu...原创 2020-03-18 21:44:36 · 163 阅读 · 0 评论 -
【LeetCode 513】找树左下角的值
1. 题目描述给定一个二叉树,在树的最后一行找到最左边的值。示例 1:输入: 2 / \ 1 3输出: 1示例 2:输入: 1 / \ 2 3 / / \4 5 6 / 7输出: 7注意: 您可以假设树(即给定的根节点)不为 NULL。2. 第一种方法(层次遍历)首先想到的就是层次遍历,但是进入了一个误区...原创 2020-03-18 20:52:47 · 90 阅读 · 0 评论 -
【LeetCode 404】左叶子之和
1. 题目描述计算给定二叉树的所有左叶子之和。示例: 3 / \ 9 20 / \ 15 7在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 242. 解题思路(1)使用递归的话,一下子想不到,先求所有节点的和:def SumOfTree(self, root): if not root: return 0 leave = ...原创 2020-03-18 20:21:52 · 125 阅读 · 0 评论 -
出现次数最多的数
一、【LeetCode 501】二叉搜索树中的众数1. 题目描述给定一个有相同值的二叉搜索树(BST),找出 BST 中的所有众数(出现频率最高的元素)。假定 BST 有如下定义:结点左子树中所含结点的值小于等于当前结点的值结点右子树中所含结点的值大于等于当前结点的值左子树和右子树都是二叉搜索树例如:给定 BST [1,null,2,2], 1 \ 2...原创 2020-03-18 12:54:43 · 638 阅读 · 0 评论 -
二叉树的三种深度优先遍历【递归法】
一、踩坑历程二叉树的三种深度优先遍历(前序 + 中序 + 后序)的递归法相对于迭代法来说要更好理解和记忆一些,迭代法在LeetCode刷题时遇见过,所以想着在Pycharm上实现一下递归,然而事情好像并不像我想象的那么简单:(1)最开始实现时,直接将 root 写成数组输进去了,结果直接报错( list 类型没有 val 属性),后来问了大佬才知道节点要用add一个个添加,其实跟链表的实现一样...原创 2020-03-17 14:20:43 · 441 阅读 · 0 评论 -
有序数组(或链表)转成二叉搜索树的问题
一、【LeetCode 108】有序数组转成二叉搜索树1.题目描述将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 ...原创 2020-03-17 10:53:41 · 131 阅读 · 0 评论 -
【LeetCode 230】二叉搜索树中第K小的元素
1.题目描述给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素。说明:你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数。示例 1:输入: root = [3,1,4,null,2], k = 1 3 / \ 1 4 \ 2输出: 1示例 2:输入: root = [5,3,6,2,4,null,nul...原创 2020-03-16 21:15:30 · 91 阅读 · 0 评论