![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
leetcode
zhouzhouasishuijiao
这个作者很懒,什么都没留下…
展开
-
Leetcode 241 为运算表达式设计优先级
https://leetcode-cn.com/problems/different-ways-to-add-parentheses/给定一个含有数字和运算符的字符串,为表达式添加括号,改变其运算优先级以求出不同的结果。你需要给出所有可能的组合的结果。有效的运算符号包含 +, - 以及 * 。示例 1:输入: "2-1-1"输出: [0, 2]解释:((2-1)-1) = 0(...原创 2019-08-26 15:32:03 · 84 阅读 · 0 评论 -
Leetcode 72. 编辑距离
给定两个单词 word1 和 word2,计算出将 word1 转换成 word2 所使用的最少操作数 。你可以对一个单词进行如下三种操作: 插入一个字符 删除一个字符 替换一个字符示例 1:输入: word1 = "horse", word2 = "ros"输出: 3解释:horse -> rorse (将 'h' 替换为 'r')rorse ...原创 2019-08-28 19:42:49 · 105 阅读 · 0 评论 -
Leetcode 84. 柱状图中最大的矩形
给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积。以上是柱状图的示例,其中每个柱子的宽度为 1,给定的高度为 [2,1,5,6,2,3]。图中阴影部分为所能勾勒出的最大矩形面积,其面积为 10 个单位。示例:输入: [2,1,5,6,2,3]输出: 10分析:今天学习...原创 2019-08-29 11:44:36 · 106 阅读 · 0 评论 -
Leetcode 95. 不同的二叉搜索树 II
给定一个整数 n,生成所有由 1 ... n 为节点所组成的二叉搜索树。示例:输入: 3输出:[ [1,null,3,2], [3,2,null,1], [3,1,null,null,2], [2,1,3], [1,null,2,null,3]]解释:以上的输出对应以下 5 种不同结构的二叉搜索树: 1 3 3 2...原创 2019-08-29 15:09:39 · 122 阅读 · 0 评论 -
Leetcode 96. 不同的二叉搜索树
给定一个整数 n,求以 1 ... n 为节点组成的二叉搜索树有多少种?示例:输入: 3输出: 5解释:给定 n = 3, 一共有 5 种不同结构的二叉搜索树: 1 3 3 2 1 \ / / / \ \ 3 2 1 1 3 2...原创 2019-08-29 16:03:49 · 96 阅读 · 0 评论 -
Leetcode 91. 解码方法
一条包含字母 A-Z 的消息通过以下方式进行了编码:'A' -> 1'B' -> 2...'Z' -> 26给定一个只包含数字的非空字符串,请计算解码方法的总数。示例 1:输入: "12"输出: 2解释: 它可以解码为 "AB"(1 2)或者 "L"(12)。示例 2:输入: "226"输出: 3解释: 它可以解码为 "BZ" (2 26),...原创 2019-08-29 21:46:52 · 183 阅读 · 0 评论 -
Leetcode 98. 验证二叉搜索树
给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征: 节点的左子树只包含小于当前节点的数。 节点的右子树只包含大于当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。示例 1:输入: 2 / \ 1 3输出: true示例 2:输入: 5 / \ 1 4 / \...原创 2019-08-29 22:11:31 · 98 阅读 · 0 评论 -
Leetcode 100. 相同的树
给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例 1:输入: 1 1 / \ / \ 2 3 2 3 [1,2,3], [1,2,3]输出: true示例 2:输入: 1...原创 2019-08-30 15:44:52 · 87 阅读 · 0 评论 -
Leetcode 210. 课程表 II
现在你总共有 n 门课需要选,记为 0 到 n-1。在选修某些课程之前需要一些先修课程。 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们: [0,1]给定课程总量以及它们的先决条件,返回你为了学完所有课程所安排的学习顺序。可能会有多个正确的顺序,你只要返回一种就可以了。如果不可能完成所有课程,返回一个空数组。示例 1:输入: 2, [[1,0]]输...原创 2019-08-30 16:27:57 · 153 阅读 · 0 评论 -
Leetcode 310. 最小高度树
对于一个具有树特征的无向图,我们可选择任何一个节点作为根。图因此可以成为树,在所有可能的树中,具有最小高度的树被称为最小高度树。给出这样的一个图,写出一个函数找到所有的最小高度树并返回他们的根节点。格式该图包含 n 个节点,标记为 0 到 n - 1。给定数字 n 和一个无向边 edges 列表(每一个边都是一对标签)。你可以假设没有重复的边会出现在 edges 中。由于所有的边都是无...原创 2019-08-30 22:58:19 · 209 阅读 · 0 评论 -
Leetcode 978. 最长湍流子数组
当 A 的子数组 A[i], A[i+1], ..., A[j] 满足下列条件时,我们称其为湍流子数组: 若 i <= k < j,当 k 为奇数时, A[k] > A[k+1],且当 k 为偶数时,A[k] < A[k+1]; 或 若 i <= k < j,当 k 为偶数时,A[k] > A[k+1] ,且当 k 为奇数时, A[k] ...原创 2019-08-31 09:46:36 · 174 阅读 · 0 评论 -
Leetcode 32. 最长有效括号
给定一个只包含 '(' 和 ')' 的字符串,找出最长的包含有效括号的子串的长度。示例 1:输入: "(()"输出: 2解释: 最长有效括号子串为 "()"示例 2:输入: ")()())"输出: 4解释: 最长有效括号子串为 "()()"分析:对于回文字符,显然会用到栈,但是这个题目的难点在于回文字符之间,哪里才会被打断,找到打断的位置,其实仔细分析,只有两种...原创 2019-08-31 11:12:53 · 142 阅读 · 0 评论 -
Leetcode 34. 在排序数组中查找元素的第一个和最后一个位置
给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。你的算法时间复杂度必须是 O(log n) 级别。如果数组中不存在目标值,返回 [-1, -1]。示例 1:输入: nums = [5,7,7,8,8,10], target = 8输出: [3,4]示例 2:输入: nums = [5,7,7,8,8,10]...原创 2019-08-31 11:41:53 · 133 阅读 · 0 评论 -
Leetcode 97. 交错字符串
给定三个字符串 s1, s2, s3, 验证 s3 是否是由 s1 和 s2 交错组成的。示例 1:输入: s1 = "aabcc", s2 = "dbbca", s3 = "aadbbcbcac"输出: true示例 2:输入: s1 = "aabcc", s2 = "dbbca", s3 = "aadbbbaccc"输出: false分析:这个题并不复杂,相比最大公...原创 2019-08-28 18:48:39 · 181 阅读 · 0 评论 -
Leetcode 83. 删除排序链表中的重复元素
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例 1:输入: 1->1->2输出: 1->2示例 2:输入: 1->1->2->3->3输出: 1->2->3分析:删除链表有个很强的方式head->next = head->next->next;这里用递归的方法即可,代码如...原创 2019-08-28 15:56:18 · 94 阅读 · 0 评论 -
Leetcode 88. 合并两个有序数组
给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。说明: 初始化 nums1 和 nums2 的元素数量分别为 m 和 n。 你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。示例:输入:nums1 = [1,2,3,0,0,0], m = 3...原创 2019-08-28 15:48:22 · 124 阅读 · 0 评论 -
Leetcode 234. 回文链表
https://leetcode-cn.com/problems/palindrome-linked-list/submissions/请判断一个链表是否为回文链表。示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: true进阶:你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题?对...原创 2019-08-26 16:55:15 · 78 阅读 · 0 评论 -
Leetcode 207. 课程表
https://leetcode-cn.com/problems/course-schedule/现在你总共有 n 门课需要选,记为 0 到 n-1。在选修某些课程之前需要一些先修课程。 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们: [0,1]给定课程总量以及它们的先决条件,判断是否可能完成所有课程的学习?示例 1:输入: 2, [[1,0]]...原创 2019-08-26 20:55:51 · 98 阅读 · 0 评论 -
Leetcode 203. 移除链表元素
删除链表中等于给定值 val 的所有节点。示例:输入: 1->2->6->3->4->5->6, val = 6输出: 1->2->3->4->5这个题目比较简单,可以考虑用递归的方式实现在某一个结点处,如果下一个结点等于val,则只需要丢掉该结点,但是如果该节点不等于val,则应该保留该结点。边界条件就是,如果在...原创 2019-08-26 21:07:23 · 80 阅读 · 0 评论 -
Leecode 221. 最大正方形
https://leetcode-cn.com/problems/maximal-square/在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。示例:输入:1 0 1 0 01 0 1 1 11 1 1 1 11 0 0 1 0输出: 4用一个循环实现动态规划,其实核心就在于dp[i][j]表示以当前位置为右下角的最大正方形...原创 2019-08-27 10:57:49 · 91 阅读 · 0 评论 -
Leetcode 216.组合总和 III
找出所有相加之和为 n 的 k 个数的组合。组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字。说明: 所有数字都是正整数。 解集不能包含重复的组合。示例 1:输入: k = 3, n = 7输出: [[1,2,4]]示例 2:输入: k = 3, n = 9输出: [[1,2,6], [1,3,5], [2,3,4]]https:...原创 2019-08-27 15:36:16 · 104 阅读 · 0 评论 -
Leetcode 202. 快乐数
编写一个算法来判断一个数是不是“快乐数”。一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1。如果可以变为 1,那么这个数就是快乐数。示例:输入: 19输出: true解释:12 + 92 = 8282 + 22 = 6862 + 82 = 10012 + 02 + 02 ...原创 2019-08-27 15:46:44 · 217 阅读 · 0 评论 -
Leetcode 201. 数字范围按位与
给定范围 [m, n],其中 0 <= m <= n <= 2147483647,返回此范围内所有数字的按位与(包含 m, n 两端点)。示例 1:输入: [5,7]输出: 4示例 2:输入: [0,1]输出: 0最直接的思路是一直与操作,可是其时间复杂度为O(n-m),如果m与n相差太大,会超时。另外一种思路是看m和n作为边界,其高位相同的部分...原创 2019-08-27 16:04:15 · 99 阅读 · 0 评论 -
Leetcode 239. 滑动窗口最大值
给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值。示例:输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3输出: [3,3,5,5,6,7]分析:滑动窗口的最大值,只需要将窗口内的数据放进一个优先队列,每次判断新加入...原创 2019-08-27 22:25:18 · 75 阅读 · 0 评论 -
Leetcode 46. 全排列
给定一个没有重复数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]分析:在数学上,全排列很好理解,但是在写的时候如何把整个排列写出来呢,可以采用的方式就是就是递归,如果取走第i个数,那么第i个数就应该被剔除。我用了sta...原创 2019-08-27 22:47:59 · 109 阅读 · 0 评论 -
Leetcode 64. 最小路径和
给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例:输入:[ [1,3,1], [1,5,1], [4,2,1]]输出: 7解释: 因为路径 1→3→1→1→1 的总和最小。分析:这是很明显的递归求解的题目,可以用动态规划,也可以看成贪心,他的每一步选择都选最短的,...原创 2019-08-28 10:19:09 · 127 阅读 · 0 评论 -
Leetcode 78. 子集
给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], []]分析:本题可以采用很经典的递归回溯,每次只需要决定是否要保存当前值,然后删掉当前值,继续...原创 2019-08-28 10:38:53 · 75 阅读 · 0 评论 -
Leetcode 63. 不同路径 II
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用 1 和 0 来表示。说明:m 和 n 的值均不超过 100。示例 1:输入:[ [0,...原创 2019-08-28 11:33:01 · 80 阅读 · 0 评论 -
Leetcode 278. 第一个错误的版本
你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。假设你有 n 个版本 [1, 2, ..., n],你想找出导致之后所有版本出错的第一个错误的版本。你可以通过调用 bool isBadVersion(version) 接口来判断版本号 version 是否在单元测试中出...原创 2019-08-31 12:13:50 · 324 阅读 · 0 评论