
LeetCode题解
LeetCode题目的思路与解决方法
while_false_
一起来刷题呀
展开
-
leetcode-322零钱兑换(动态规划)
零钱兑换https://leetcode-cn.com/problems/coin-change/给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。你可以认为每种硬币的数量是无限的。示例 1:输入:coins = [1, 2, 5], amount = 11输出:3解释:11 = 5 + 5 + 1示例 2:输入:coins = [2], amount = 3输出:-1示例原创 2020-11-30 14:45:13 · 109 阅读 · 0 评论 -
Leetcode705. 设计哈希集合 (哈希,链地址法)
链接:https://leetcode-cn.com/problems/design-hashset不使用任何内建的哈希表库设计一个哈希集合具体地说,你的设计应该包含以下的功能add(value):向哈希集合中插入一个值。contains(value) :返回哈希集合中是否存在这个值。remove(value):将给定值从哈希集合中删除。如果哈希集合中没有这个值,什么也不做。示例:M...原创 2019-12-20 18:23:02 · 163 阅读 · 0 评论 -
Leetcode704. 二分查找(二分)
链接:https://leetcode-cn.com/problems/binary-search给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。示例 1:输入: nums = [-1,0,3,5,9,12], target = 9输出: 4解释: 9 出现在 nu...原创 2019-12-20 10:34:18 · 330 阅读 · 0 评论 -
Leetcode703. 数据流中的第K大元素(堆排序,最小堆,最大堆,快速排序,直接插入排序,数组)
链接:https://leetcode-cn.com/problems/kth-largest-element-in-a-stream设计一个找到数据流中第K大元素的类(class)。注意是排序后的第K大元素,不是第K个不同的元素。你的 KthLargest 类需要一个同时接收整数 k 和整数数组nums 的构造器,它包含数据流中的初始元素。每次调用 KthLargest.add,返回当前数据...原创 2019-12-18 18:09:02 · 182 阅读 · 0 评论 -
Leetcode700. 二叉搜索树中的搜索( BST , 递归,迭代)
链接:https://leetcode-cn.com/problems/search-in-a-binary-search-tree给定二叉搜索树(BST)的根节点和一个值。 你需要在BST中找到节点值等于给定值的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 NULL。例如,给定二叉搜索树: 4 / \ 2 7 / \ ...原创 2019-12-18 15:14:03 · 179 阅读 · 0 评论 -
Leetcode697. 数组的度(数组, 下标)
链接:https://leetcode-cn.com/problems/degree-of-an-array给定一个非空且只包含非负数的整数数组 nums, 数组的度的定义是指数组里任一元素出现频数的最大值。你的任务是找到与 nums 拥有相同大小的度的最短连续子数组,返回其长度。示例 1:输入: [1, 2, 2, 3, 1]输出: 2解释: 输入数组的度是2,因为元素1和2的出现...原创 2019-12-18 14:35:36 · 228 阅读 · 0 评论 -
Leetcode696. 计数二进制子串(字符串, 字串)
链接:https://leetcode-cn.com/problems/count-binary-substrings给定一个字符串 s,计算具有相同数量0和1的非空(连续)子字符串的数量,并且这些子字符串中的所有0和所有1都是组合在一起的。重复出现的子串要计算它们出现的次数。示例 1 :输入: "00110011"输出: 6解释: 有6个子串具有相同数量的连续1和0:“0011”,“...原创 2019-12-17 17:17:48 · 180 阅读 · 0 评论 -
Leetcode693. 交替位二进制数(位运算)
链接:https://leetcode-cn.com/problems/binary-number-with-alternating-bits给定一个正整数,检查他是否为交替位二进制数:换句话说,就是他的二进制数相邻的两个位数永不相等。示例 1:输入: 5输出: True解释:5的二进制数是: 101示例 2:输入: 7输出: False解释:7的二进制数是: 111示例 ...原创 2019-12-17 11:06:48 · 142 阅读 · 0 评论 -
Leetcode687. 最长同值路径(二叉树遍历,求最长路径,遍历保存优化)
链接:https://leetcode-cn.com/problems/longest-univalue-path给定一个二叉树,找到最长的路径,这个路径中的每个节点具有相同值。 这条路径可以经过也可以不经过根节点。注意:两个节点之间的路径长度由它们之间的边数表示。示例 1:输入: 5 / \ 4 5 / \ \ 1 1 5输出:...原创 2019-12-13 17:57:08 · 233 阅读 · 0 评论 -
Leetcode686. 重复叠加字符串匹配(字符串匹配)
链接:https://leetcode-cn.com/problems/repeated-string-match给定两个字符串 A 和 B, 寻找重复叠加字符串A的最小次数,使得字符串B成为叠加后的字符串A的子串,如果不存在则返回 -1。举个例子,A = “abcd”,B = “cdabcdab”。答案为 3, 因为 A 重复叠加三遍后为 “abcdabcdabcd”,此时 B 是其子串;...原创 2019-12-13 14:31:17 · 196 阅读 · 0 评论 -
Leetcode682. 棒球比赛(栈简单实现应用)
链接:https://leetcode-cn.com/problems/baseball-game你现在是棒球比赛记录员。给定一个字符串列表,每个字符串可以是以下四种类型之一:1.整数(一轮的得分):直接表示您在本轮中获得的积分数。2. “+”(一轮的得分):表示本轮获得的得分是前两轮有效 回合得分的总和。3. “D”(一轮的得分):表示本轮获得的得分是前一轮有效 回合得分的两倍。4....原创 2019-12-12 17:18:37 · 140 阅读 · 0 评论 -
Leetcode680. 验证回文字符串 Ⅱ(回文,变种)
给定一个非空字符串 s,最多删除一个字符。判断是否能成为回文字符串。示例 1:输入: "aba"输出: True示例 2:输入: "abca"输出: True解释: 你可以删除c字符。注意:字符串只包含从 a-z 的小写字母。字符串的最大长度是50000。/* 思路:依据回文串的性质,选用头尾标记,依据情况选择删除不匹配的前后字符(选删),继续走到结束(i,j相遇)特...原创 2019-10-24 11:08:33 · 190 阅读 · 0 评论 -
Leetcode674. 最长连续递增序列(数组)
示例 1:输入: [1,3,5,4,7]输出: 3解释: 最长连续递增序列是 [1,3,5], 长度为3。尽管 [1,3,5,7] 也是升序的子序列, 但它不是连续的,因为5和7在原数组里被4隔开。 示例 2:输入: [2,2,2,2,2]输出: 1解释: 最长连续递增序列是 [2], 长度为1。注意:数组长度不会超过10000。/* 思路: 前后标记判断是否连续即...原创 2019-10-23 17:33:49 · 145 阅读 · 0 评论 -
Leetcode671. 二叉树中第二小的节点(二叉树,带值遍历)
给定一个非空特殊的二叉树,每个节点都是正数,并且每个节点的子节点数量只能为 2 或 0。如果一个节点有两个子节点的话,那么这个节点的值不大于它的子节点的值。给出这样的一个二叉树,你需要输出所有节点中的第二小的值。如果第二小的值不存在的话,输出 -1 。示例 1:输入: 2 / \ 2 5 / \ 5 7输出: 5说明: 最小的值是 2 ,第...原创 2019-10-16 10:53:37 · 229 阅读 · 0 评论 -
Leetcode669. 修剪二叉搜索树(BST, 剪枝)
给定一个二叉搜索树,同时给定最小边界L 和最大边界 R。通过修剪二叉搜索树,使得所有节点的值在[L, R]中 (R>=L) 。你可能需要改变树的根节点,所以结果应当返回修剪好的二叉搜索树的新的根节点。示例 1:输入: 1 / \ 0 2 L = 1 R = 2输出: 1 \ 2示例 2:输入: 3...原创 2019-10-15 18:20:52 · 296 阅读 · 0 评论 -
Leetcode665. 非递减数列(数组,临界情况)
给定一个长度为 n 的整数数组,你的任务是判断在最多改变 1 个元素的情况下,该数组能否变成一个非递减数列。我们是这样定义一个非递减数列的: 对于数组中所有的 i (1 <= i < n),满足 array[i] <= array[i + 1]。示例 1:输入: [4,2,3]输出: True解释: 你可以通过把第一个4变成1来使得它成为一个非递减数列。示例 2:输...原创 2019-10-15 16:10:22 · 178 阅读 · 0 评论 -
Leetcode661. 图片平滑器(数组,边界逻辑)
https://leetcode-cn.com/problems/image-smoother/包含整数的二维矩阵 M 表示一个图片的灰度。你需要设计一个平滑器来让每一个单元的灰度成为平均灰度 (向下舍入) ,平均灰度的计算是周围的8个单元和它本身的值求平均,如果周围的单元格不足八个,则尽可能多的利用它们。示例 1:输入:[[1,1,1], [1,0,1], [1,1,1]]输出:...原创 2019-08-01 17:34:57 · 262 阅读 · 0 评论 -
Leetcode657. 机器人能否返回原点
https://leetcode-cn.com/problems/robot-return-to-origin/在二维平面上,有一个机器人从原点 (0, 0) 开始。给出它的移动顺序,判断这个机器人在完成移动后是否在 (0, 0) 处结束。移动顺序由字符串表示。字符 move[i] 表示其第 i 次移动。机器人的有效动作有 R(右),L(左),U(上)和 D(下)。如果机器人在完成所有动作后返...原创 2019-07-31 11:08:33 · 456 阅读 · 0 评论 -
Leetcode653. 两数之和 IV - 输入 BST (BST)
https://leetcode-cn.com/problems/two-sum-iv-input-is-a-bst/给定一个二叉搜索树和一个目标结果,如果 BST 中存在两个元素且它们的和等于给定的目标结果,则返回 true。案例 1:输入: 5 / \ 3 6 / \ \2 4 7Target = 9输出: True案例 2:输入: ...原创 2019-07-31 10:48:45 · 219 阅读 · 0 评论 -
Leetcode645. 错误的集合(哈希,数组)
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/set-mismatch集合 S 包含从1到 n 的整数。不幸的是,因为数据错误,导致集合里面某一个元素复制了成了集合里面的另外一个元素的值,导致集合丢失了一个整数并且有一个元素重复。给定一个数组 nums 代表了集合 S 发生错误后的结果。你的任务是首先寻找到重复出现的整数,再找到丢失的整...原创 2019-07-31 10:02:39 · 118 阅读 · 0 评论 -
Leetcode 643. 子数组最大平均数 I(数组,滑动窗口?)
https://leetcode-cn.com/problems/maximum-average-subarray-i/给定 n 个整数,找出平均数最大且长度为 k 的连续子数组,并输出该最大平均数。示例 1:输入: [1,12,-5,-6,50,3], k = 4输出: 12.75解释: 最大平均数 (12-5-6+50)/4 = 51/4 = 12.75注意:1 <= k...原创 2019-07-15 16:06:41 · 274 阅读 · 0 评论 -
Leetcode637. 二叉树的层平均值(遍历,深度,每层个数)
https://leetcode-cn.com/problems/average-of-levels-in-binary-tree/给定一个非空二叉树, 返回一个由每层节点平均值组成的数组.示例 1:输入: 3 / \ 9 20 / \ 15 7输出: [3, 14.5, 11]解释:第0层的平均值是 3, 第1层是 14.5, 第2层是 11...原创 2019-06-24 14:45:30 · 494 阅读 · 0 评论 -
LeetCode633. 平方数之和(数学,三角形特征)
https://leetcode-cn.com/problems/sum-of-square-numbers给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a2 + b2 = c。示例1:输入: 5输出: True解释: 1 * 1 + 2 * 2 = 5示例2:输入: 3输出: False/*思路根据三角形三条边的特性a为短边,b为长边, 若a*a + ...原创 2019-06-21 16:23:05 · 249 阅读 · 0 评论 -
LeetCode628. 三个数的最大乘积(数组,排序,技巧)
https://leetcode-cn.com/problems/maximum-product-of-three-numbers给定一个整型数组,在数组中找出由三个数组成的最大乘积,并输出这个乘积。示例 1:输入: [1,2,3]输出: 6示例 2:输入: [1,2,3,4]输出: 24注意:给定的整型数组长度范围是[3,104],数组中所有的元素范围是[-1000, 1000...原创 2019-06-21 15:45:25 · 235 阅读 · 0 评论 -
Leetcod627. 交换工资(update, if)
https://leetcode-cn.com/problems/swap-salary给定一个 salary 表,如下所示,有 m = 男性 和 f = 女性 的值。交换所有的 f 和 m 值(例如,将所有 f 值更改为 m,反之亦然)。要求只使用一个更新(Update)语句,并且没有中间的临时表。注意,您必只能写一个 Update 语句,请不要编写任何 Select 语句。例如:| i...原创 2019-06-21 10:36:34 · 267 阅读 · 0 评论 -
Leetcode620. 有趣的电影(sql, order, in)
https://leetcode-cn.com/problems/not-boring-movies某城市开了一家新的电影院,吸引了很多人过来看电影。该电影院特别注意用户体验,专门有个 LED显示板做电影推荐,上面公布着影评和相关电影描述。作为该电影院的信息部主管,您需要编写一个 SQL查询,找出所有影片描述为非 boring (不无聊) 的并且 id 为奇数 的影片,结果请按等级 ratin...原创 2019-06-20 15:22:07 · 152 阅读 · 0 评论 -
Leetcode617. 合并二叉树(二叉树,递归)
https://leetcode-cn.com/problems/merge-two-binary-trees给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。示例 1:输入: Tree 1 ...原创 2019-06-20 15:06:19 · 115 阅读 · 0 评论 -
LeetCode606. 根据二叉树创建字符串(二叉树前序遍历,字符串拼接)
https://leetcode-cn.com/problems/construct-string-from-binary-tree/你需要采用前序遍历的方式,将一个二叉树转换成一个由括号和整数组成的字符串。空节点则用一对空括号 “()” 表示。而且你需要省略所有不影响字符串与原始二叉树之间的一对一映射关系的空括号对。示例 1:输入: 二叉树: [1,2,3,4] 1 ...原创 2019-06-20 10:38:17 · 407 阅读 · 0 评论 -
Leetcode605. 种花问题(数组,边界问题--避免边界)
https://leetcode-cn.com/problems/can-place-flowers/假设你有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花卉不能种植在相邻的地块上,它们会争夺水源,两者都会死去。给定一个花坛(表示为一个数组包含0和1,其中0表示没种植花,1表示种植了花),和一个数 n 。能否在不打破种植规则的情况下种入 n 朵花?能则返回True,不能则返回Fa...原创 2019-06-19 16:30:42 · 225 阅读 · 0 评论 -
Leetcode599. 两个列表的最小索引总和(哈希,字符串)
https://leetcode-cn.com/problems/minimum-index-sum-of-two-lists/submissions/假设Andy和Doris想在晚餐时选择一家餐厅,并且他们都有一个表示最喜爱餐厅的列表,每个餐厅的名字用字符串表示。你需要帮助他们用最少的索引和找出他们共同喜爱的餐厅。 如果答案不止一个,则输出所有答案并且不考虑顺序。 你可以假设总是存在一个答案...原创 2019-06-19 10:16:45 · 133 阅读 · 0 评论 -
Leetcode598. 范围求和 II(数组)
https://leetcode-cn.com/problems/range-addition-ii/给定一个初始元素全部为 0,大小为 m*n 的矩阵 M 以及在 M 上的一系列更新操作。操作用二维数组表示,其中的每个操作用一个含有两个正整数 a 和 b 的数组表示,含义是将所有符合 0 <= i < a 以及 0 <= j < b 的元素 M[i][j] 的值都增加...原创 2019-06-18 10:13:15 · 132 阅读 · 0 评论 -
Leetcode596. 超过5名学生的课(sql , group by, having , DISTINCT)
https://leetcode-cn.com/problems/classes-more-than-5-students/有一个courses 表 ,有: student (学生) 和 class (课程)。请列出所有超过或等于5名学生的课。例如,表:+---------+------------+| student | class |+---------+--------...原创 2019-05-29 10:23:26 · 196 阅读 · 0 评论 -
Leetc0de595. 大的国家(sql,union)
https://leetcode-cn.com/problems/big-countries/submissions/这里有张 World 表+-----------------+------------+------------+--------------+---------------+| name | continent | area | popu...原创 2019-05-23 11:03:41 · 348 阅读 · 0 评论 -
Leetcode594. 最长和谐子序列(哈希,排序)
https://leetcode-cn.com/problems/longest-harmonious-subsequence/submissions/和谐数组是指一个数组里元素的最大值和最小值之间的差别正好是1。现在,给定一个整数数组,你需要在所有可能的子序列中找到最长的和谐子序列的长度。示例 1:输入: [1,3,2,2,5,2,3,7]输出: 5原因: 最长的和谐数组是:[3,2...原创 2019-05-23 10:47:29 · 361 阅读 · 0 评论 -
LeetCode581. 最短无序连续子数组(排序,数组)
https://leetcode-cn.com/problems/shortest-unsorted-continuous-subarray/submissions/给定一个整数数组,你需要寻找一个连续的子数组,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序。你找到的子数组应是最短的,请输出它的长度。示例 1:输入: [2, 6, 4, 8, 10, 9, 15]输出: 5...原创 2019-05-23 09:16:23 · 448 阅读 · 0 评论 -
Leetcode575. 分糖果(数组)
https://leetcode-cn.com/problems/distribute-candies/submissions/给定一个偶数长度的数组,其中不同的数字代表着不同种类的糖果,每一个数字代表一个糖果。你需要把这些糖果平均分给一个弟弟和一个妹妹。返回妹妹可以获得的最大糖果的种类数。示例 1:输入: candies = [1,1,2,2,3,3]输出: 3解析: 一共有三种种类的...原创 2019-05-22 10:49:46 · 127 阅读 · 0 评论 -
LeetCode572. 另一个树的子树(二叉树,先序遍历)
https://leetcode-cn.com/problems/subtree-of-another-tree/给定两个非空二叉树 s 和 t,检验 s 中是否包含和 t 具有相同结构和节点值的子树。s 的一个子树包括 s 的一个节点和这个节点的所有子孙。s 也可以看做它自身的一棵子树。示例 1:给定的树 s: 3 / \ 4 5 / \ 1 2给...原创 2019-05-22 10:25:33 · 397 阅读 · 0 评论 -
LeetCode566. 重塑矩阵(数组,指针的指针)
https://leetcode-cn.com/problems/reshape-the-matrix/在MATLAB中,有一个非常有用的函数 reshape,它可以将一个矩阵重塑为另一个大小不同的新矩阵,但保留其原始数据。给出一个由二维数组表示的矩阵,以及两个正整数r和c,分别表示想要的重构的矩阵的行数和列数。重构后的矩阵需要将原始矩阵的所有元素以相同的行遍历顺序填充。如果具有给定参数的...原创 2019-05-21 16:04:43 · 303 阅读 · 0 评论 -
LeetCode563. 二叉树的坡度(二叉树,后序)
https://leetcode-cn.com/problems/binary-tree-tilt/submissions/给定一个二叉树,计算整个树的坡度。一个树的节点的坡度定义即为,该节点左子树的结点之和和右子树结点之和的差的绝对值。空结点的的坡度是0。整个树的坡度就是其所有节点的坡度之和。示例:输入: 1 / \ 2 3输...原创 2019-05-21 10:26:58 · 199 阅读 · 0 评论 -
LeetCode561. 数组拆分 I(排序,数组)
https://leetcode-cn.com/problems/array-partition-i/给定长度为 2n 的数组, 你的任务是将这些数分成 n 对, 例如 (a1, b1), (a2, b2), …, (an, bn) ,使得从1 到 n 的 min(ai, bi) 总和最大。示例 1:输入: [1,4,3,2]输出: 4解释: n 等于 2, 最大总和为 4 = min(...原创 2019-05-20 15:13:14 · 287 阅读 · 0 评论