
Leetcode
Thexin.
不愿付诸行动,却又想登峰造极。
展开
-
Leetcode--781.森林中的兔子
森林中,每个兔子都有颜色。其中一些兔子(可能是全部)告诉你还有多少其他的兔子和自己有相同的颜色。我们将这些回答放在answers数组里。返回森林中兔子的最少数量。示例:输入: answers = [1, 1, 2]输出: 5解释:两只回答了 "1" 的兔子可能有相同的颜色,设为红色。之后回答了 "2" 的兔子不会是红色,否则他们的回答会相互矛盾。设回答了 "2" 的兔子为蓝色。此外,森林中还应有另外 2 只蓝色兔子的回答没有包含在数组中。因此森林中兔子的最少数量是 5: 3 只回..原创 2021-04-04 13:56:09 · 107 阅读 · 0 评论 -
Leetcode--329. 矩阵中的最长递增路径
给定一个整数矩阵,找出最长递增路径的长度。对于每个单元格,你可以往上,下,左,右四个方向移动。 你不能在对角线方向上移动或移动到边界外(即不允许环绕)。示例 1:输入: nums =[ [9,9,4], [6,6,8], [2,1,1]]输出: 4解释: 最长递增路径为[1, 2, 6, 9]。示例 2:输入: nums =[ [3,4,5], [3,2,6], [2,2,1]]输出: 4解释: 最长递增路径是[3, 4, 5, 6]...原创 2020-11-16 21:39:58 · 126 阅读 · 0 评论 -
Leetcode--450. 删除二叉搜索树中的节点
给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的key对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。一般来说,删除节点可分为两个步骤:首先找到需要删除的节点;如果找到了,删除它。说明: 要求算法时间复杂度为O(h),h 为树的高度。示例:root = [5,3,6,2,4,null,7]key = 3 5 / \ 3 6/ \ \2 4 7给定需要删除的节点值是 3...原创 2020-11-16 20:41:30 · 108 阅读 · 0 评论 -
剑指 Offer 68 - II. (二叉树)二叉树的最近公共祖先
题目描述给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4]示例 1:输入: root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1输出: 3解释: 节点转载 2020-11-06 11:30:34 · 127 阅读 · 0 评论 -
Leetcode--763. 划分字母区间
字符串 S 由小写字母组成。我们要把这个字符串划分为尽可能多的片段,同一个字母只会出现在其中的一个片段。返回一个表示每个字符串片段的长度的列表。示例 1:输入:S = "ababcbacadefegdehijhklij"输出:[9,7,8]解释:划分结果为 "ababcbaca", "defegde", "hijhklij"。每个字母最多出现在一个片段中。像 "ababcbacadefegde", "hijhklij" 的划分是错误的,因为划分的片段数较少。提示:S的..原创 2020-10-22 21:44:56 · 372 阅读 · 0 评论 -
Leetcode--96. 不同的二叉搜索树(java)
给定一个整数 n,求以1 ...n为节点组成的二叉搜索树有多少种?示例:输入: 3输出: 5解释:给定 n = 3, 一共有 5 种不同结构的二叉搜索树: 1 3 3 2 1 \ / / / \ \ 3 2 1 1 3 2 / / \ \ 2 ...原创 2020-07-15 22:24:41 · 190 阅读 · 0 评论 -
124. 二叉树中的最大路径和(Java)
给定一个非空二叉树,返回其最大路径和。本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。示例 1:输入: [1,2,3] 1 / \ 2 3输出: 6示例2:输入: [-10,9,20,null,null,15,7] -10/ \9 20/ \15 7输出: 42思路:递归为每个点设置一个最大值,表示已这个结点为中心...原创 2020-06-21 15:09:05 · 556 阅读 · 0 评论 -
Leetcode--1028. 从先序遍历还原二叉树(Java)
我们从二叉树的根节点 root开始进行深度优先搜索。在遍历中的每个节点处,我们输出D条短划线(其中D是该节点的深度),然后输出该节点的值。(如果节点的深度为 D,则其直接子节点的深度为 D + 1。根节点的深度为 0)。如果节点只有一个子节点,那么保证该子节点为左子节点。给出遍历输出S,还原树并返回其根节点root。示例 1:输入:"1-2--3--4-5--6--7"输出:[1,2,5,3,4,6,7]示例 2:输入:"1-2--3---4-5--6--...原创 2020-06-18 14:02:42 · 282 阅读 · 0 评论 -
Leetcode--1014. 最佳观光组合(java)
给定正整数数组A,A[i]表示第 i 个观光景点的评分,并且两个景点i 和j之间的距离为j - i。一对景点(i < j)组成的观光组合的得分为(A[i] + A[j] + i- j):景点的评分之和减去它们两者之间的距离。返回一对观光景点能取得的最高分。示例:输入:[8,1,5,2,6]输出:11解释:i = 0, j = 2, A[i] + A[j] + i - j = 8 + 5 + 0 - 2 = 11提示:2 <= A.length ...原创 2020-06-17 11:17:05 · 202 阅读 · 0 评论 -
Leetcode--837. 新21点(java)
爱丽丝参与一个大致基于纸牌游戏 “21点” 规则的游戏,描述如下:爱丽丝以 0 分开始,并在她的得分少于 K 分时抽取数字。 抽取时,她从 [1, W] 的范围中随机获得一个整数作为分数进行累计,其中 W 是整数。 每次抽取都是独立的,其结果具有相同的概率。当爱丽丝获得不少于 K 分时,她就停止抽取数字。 爱丽丝的分数不超过 N 的概率是多少?示例 1:输入:N = 10, K = 1, W = 10输出:1.00000说明:爱丽丝得到一张卡,然后停止。示例 2:输入:N = 6,原创 2020-06-03 09:56:26 · 121 阅读 · 0 评论 -
Leetcode--394. 字符串解码(Java)
给定一个经过编码的字符串,返回它解码后的字符串。编码规则为:k[encoded_string],表示其中方括号内部的encoded_string正好重复k次。注意k保证为正整数。你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数k,例如不会出现像3a或2[4]的输入。示例:s = "3[a]2[bc]", 返回 "aaabcbc".s = "3[a2[c...原创 2020-05-28 10:02:50 · 323 阅读 · 0 评论 -
Leetcode--287. 寻找重复数(Java)
给定一个包含n + 1 个整数的数组nums,其数字都在 1 到 n之间(包括 1 和 n),可知至少存在一个重复的整数。假设只有一个重复的整数,找出这个重复的数。示例 1:输入: [1,3,4,2,2]输出: 2示例 2:输入: [3,1,3,4,2]输出: 3说明:不能更改原数组(假设数组是只读的)。只能使用额外的 O(1) 的空间。时间复杂度小于 O(n2) 。数组中只有一个重复的数字,但它可能不止重复出现一次。思路:通过数组构建一个循环链表,之后通过...原创 2020-05-27 00:04:03 · 228 阅读 · 0 评论 -
Leetcode--5. 最长回文子串(java)
给定一个字符串 s,找到 s 中最长的回文子串。你可以假设s 的最大长度为 1000。示例 1:输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。示例 2:输入: "cbbd"输出: "bb"思路:中心扩展法每次都以一个点或者两个点为中心,向两边扩散,如果左右字符相等就继续遍历以一个点为中心是因为回文字符串长度可能是奇数,比如:ababa以两个点为中心是因为回文字符串长度可能是偶数,比如:ababab代码:classSolut...原创 2020-05-21 08:04:01 · 173 阅读 · 0 评论 -
Leetcode--1371. 每个元音包含偶数次的最长子字符串(Java)
给你一个字符串s,请你返回满足以下条件的最长子字符串的长度:每个元音字母,即'a','e','i','o','u' ,在子字符串中都恰好出现了偶数次。示例 1:输入:s = "eleetminicoworoep"输出:13解释:最长子字符串是 "leetminicowor" ,它包含 e,i,o各 2 个,以及 0 个 a,u 。示例 2:输入:s = "leetcodeisgreat"输出:5解释:最长子字符串是 "leetc" ,其中包含 2 个 e 。示例 3:...原创 2020-05-20 20:02:48 · 361 阅读 · 0 评论 -
Leetcode--152. 乘积最大子数组(java)
给你一个整数数组 nums,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。示例 1:输入: [2,3,-2,4]输出: 6解释:子数组 [2,3] 有最大乘积 6。示例 2:输入: [-2,0,-1]输出: 0解释:结果不能为 2, 因为 [-2,-1] 不是子数组。思路:每次如果nums[i]是负数,交换最大最小值代码:classSolution{publicintmaxProdu...原创 2020-05-18 09:27:10 · 298 阅读 · 0 评论 -
Leetcode--210.课程表Ⅱ
现在你总共有 n 门课需要选,记为0到n-1。在选修某些课程之前需要一些先修课程。例如,想要学习课程 0 ,你需要先完成课程1 ,我们用一个匹配来表示他们: [0,1]给定课程总量以及它们的先决条件,返回你为了学完所有课程所安排的学习顺序。可能会有多个正确的顺序,你只要返回一种就可以了。如果不可能完成所有课程,返回一个空数组。示例1:输入: 2, [[1,0]]输出: [0,1]解释:总共有 2 门课程。要学习课程 1,你需要先完成课程 0。因此,正确的课程顺序为 [...原创 2020-05-17 11:49:21 · 170 阅读 · 0 评论 -
Leetcode--1019. 链表中的下一个更大节点(java)
给出一个以头节点head作为第一个节点的链表。链表中的节点分别编号为:node_1, node_2, node_3, ... 。每个节点都可能有下一个更大值(next larger value):对于node_i,如果其next_larger(node_i)是node_j.val,那么就有j > i且node_j.val > node_i.val,而j是可能的选项中最小的那个。如果不存在这样的j,那么下一个更大值为0。返回整数答案数组answer,其中a...原创 2020-05-11 21:07:09 · 4472 阅读 · 0 评论 -
Leetcode--144. 二叉树的前序遍历(迭代&&递归)
给定一个二叉树,返回它的前序遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3输出: [1,2,3]进阶:递归算法很简单,你可以通过迭代算法完成吗?代码:迭代:/***Definitionforabinarytreenode.*publicclassTreeNode{*intval;*TreeNodeleft;*TreeNoderi...原创 2020-05-11 15:55:30 · 161 阅读 · 0 评论 -
Leetcode--94. 二叉树的中序遍历(迭代&&递归)
给定一个二叉树,返回它的中序遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3输出: [1,3,2]代码:迭代:/***Definitionforabinarytreenode.*publicclassTreeNode{*intval;*TreeNodeleft;*TreeNoderight;*TreeNode(intx){...原创 2020-05-11 15:33:25 · 148 阅读 · 0 评论 -
Leetcode--145. 二叉树的后序遍历(迭代&&递归)
给定一个二叉树,返回它的 后序遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3输出: [3,2,1]代码:迭代:从根节点开始依次迭代,弹出栈顶元素输出到输出列表中,然后依次压入它的所有孩子节点,按照从上到下、从左至右的顺序依次压入栈中。/***Definitionforabinarytreenode.*publicclassTreeNode{*intval;*...原创 2020-05-11 14:39:48 · 126 阅读 · 0 评论 -
Leetcode--105. 从前序与中序遍历序列构造二叉树(Java)
根据一棵树的前序遍历与中序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出前序遍历 preorder =[3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树: 3 / \ 9 20 / \ 15 7代码:/***Definitionforabinarytreenode.*publicclassTreeNode{*intval;...原创 2020-05-11 10:57:27 · 218 阅读 · 0 评论 -
Leetcode--236. 二叉树的最近公共祖先(Java)
给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树:root =[3,5,1,6,2,0,8,null,null,7,4]示例 1:输入: root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1输出: 3解释: 节点 5 ...原创 2020-05-10 10:03:55 · 257 阅读 · 0 评论 -
Leetoce--572. 另一个树的子树(java)
给定两个非空二叉树 s 和 t,检验s 中是否包含和 t 具有相同结构和节点值的子树。s 的一个子树包括 s 的一个节点和这个节点的所有子孙。s 也可以看做它自身的一棵子树。示例 1:给定的树 s: 3 / \ 4 5 / \1 2给定的树 t: 4 / \1 2返回 true,因为 t 与 s 的一个子树拥有相同的结构和...原创 2020-05-07 08:12:51 · 160 阅读 · 0 评论 -
leetcode--983.最低票价
在一个火车旅行很受欢迎的国度,你提前一年计划了一些火车旅行。在接下来的一年里,你要旅行的日子将以一个名为days的数组给出。每一项是一个从1到365的整数。火车票有三种不同的销售方式:一张为期一天的通行证售价为costs[0] 美元;一张为期七天的通行证售价为costs[1] 美元;一张为期三十天的通行证售价为costs[2] 美元。通行证允许数天无限制的旅行。 例...原创 2020-05-06 10:03:49 · 142 阅读 · 0 评论 -
Leetcode--全排列(Java)
给定一个 没有重复 数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]代码:classSolution{publicList<List<Integer>>permute(int[]...原创 2020-04-25 00:39:35 · 232 阅读 · 0 评论 -
Leetcode--1248. 统计「优美子数组」(java)
给你一个整数数组nums 和一个整数 k。如果某个 连续 子数组中恰好有 k 个奇数数字,我们就认为这个子数组是「优美子数组」。请返回这个数组中「优美子数组」的数目。示例 1:输入:nums = [1,1,2,1,1], k = 3输出:2解释:包含 3 个奇数的子数组是 [1,1,2,1] 和 [1,2,1,1] 。示例 2:输入:nums = [2,4,6],...原创 2020-04-21 10:04:08 · 291 阅读 · 0 评论 -
Leetcode-437. 路径总和 III(Java)
给定一个二叉树,它的每个结点都存放着一个整数值。找出路径和等于给定数值的路径总数。路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。二叉树不超过1000个节点,且节点数值范围是 [-1000000,1000000] 的整数。示例:root = [10,5,-3,3,2,null,11,3,-2,null,1], sum = 8...原创 2020-04-15 10:31:38 · 166 阅读 · 0 评论 -
Leetcode--542. 01 矩阵(java)
给定一个由 0 和 1 组成的矩阵,找出每个元素到最近的 0 的距离。两个相邻元素间的距离为 1 。示例 1:输入:0 0 00 1 00 0 0输出:0 0 00 1 00 0 0示例 2:输入:0 0 00 1 01 1 1输出:0 0 00 1 01 2 1注意:给定矩阵的元素个数不超过 10000。给定矩阵中至少有一个元素是 0。...原创 2020-04-15 09:49:45 · 246 阅读 · 0 评论 -
Leetcode--23.合并K个排序链表(Java)
合并k个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。示例:输入:[1->4->5,1->3->4,2->6]输出: 1->1->2->3->4->4->5->6思路:分治法多个链表,两两合并,第一个和第二个合并,第三个和第四个合并....如果链表的个数是奇数,最后一...原创 2020-04-11 15:51:07 · 227 阅读 · 0 评论 -
Leetcode--面试题 01.07. 旋转矩阵(Java)
给你一幅由 N × N 矩阵表示的图像,其中每个像素的大小为 4 字节。请你设计一种算法,将图像旋转 90 度。不占用额外内存空间能否做到?示例 1:给定 matrix =[ [1,2,3], [4,5,6], [7,8,9]],原地旋转输入矩阵,使其变为:[ [7,4,1], [8,5,2], [9,6,3]]示例 2:给定 matr...原创 2020-04-07 10:50:04 · 346 阅读 · 0 评论 -
Leetcode--72.编辑距离(java)
给你两个单词word1 和word2,请你计算出将word1转换成word2 所使用的最少操作数。你可以对一个单词进行如下三种操作:插入一个字符删除一个字符替换一个字符示例1:输入:word1 = "horse", word2 = "ros"输出:3解释:horse -> rorse (将 'h' 替换为 'r')rorse -> rose...原创 2020-04-06 09:55:21 · 165 阅读 · 0 评论 -
Leetcode--1111. 有效括号的嵌套深度(Java)
有效括号字符串 仅由"(" 和")"构成,并符合下述几个条件之一:空字符串连接,可以记作AB(A 与 B 连接),其中A和B都是有效括号字符串嵌套,可以记作(A),其中A是有效括号字符串类似地,我们可以定义任意有效括号字符串 s 的 嵌套深度depth(S):s 为空时,depth("") = 0s 为 A 与 B 连接时,depth(A + B) = ma...原创 2020-04-01 09:34:44 · 294 阅读 · 0 评论 -
Leetcode--130. 被围绕的区域(java)
给定一个二维的矩阵,包含'X'和'O'(字母 O)。找到所有被 'X' 围绕的区域,并将这些区域里所有的'O' 用 'X' 填充。示例:X X X XX O O XX X O XX O X X运行你的函数后,矩阵变为:X X X XX X X XX X X XX O X X解释:被围绕的区间不会存在于边界上,换句话说,任何边界上的'O'都不会被填充为...原创 2020-03-30 18:08:45 · 187 阅读 · 0 评论 -
Leetcode--820:单词的压缩编码(java)
给定一个单词列表,我们将这个列表编码成一个索引字符串S与一个索引列表 A。例如,如果这个列表是 ["time", "me", "bell"],我们就可以将其表示为 S = "time#bell#" 和 indexes = [0, 2, 5]。对于每一个索引,我们可以通过从字符串 S中索引的位置开始读取字符串,直到 "#" 结束,来恢复我们之前的单词列表。那么成功对给定单词列表进行...原创 2020-03-28 11:14:04 · 373 阅读 · 0 评论 -
Leetcode:892. 三维形体的表面积(Java)
在N*N的网格上,我们放置一些1 * 1 * 1的立方体。每个值v = grid[i][j]表示v个正方体叠放在对应单元格(i, j)上。请你返回最终形体的表面积。示例 1:输入:[[2]]输出:10示例 2:输入:[[1,2],[3,4]]输出:34示例 3:输入:[[1,0],[0,2]]输出:16示例 4:输入:[[1,...原创 2020-03-25 08:57:29 · 114 阅读 · 0 评论 -
Leetcode--1160.拼写单词(Java)
给你一份『词汇表』(字符串数组)words和一张『字母表』(字符串)chars。假如你可以用chars中的『字母』(字符)拼写出 words中的某个『单词』(字符串),那么我们就认为你掌握了这个单词。注意:每次拼写时,chars 中的每个字母都只能用一次。返回词汇表words中你掌握的所有单词的 长度之和。示例 1:输入:words = ["cat","b...原创 2020-03-17 09:51:11 · 301 阅读 · 0 评论 -
Leetcode--字符串压缩
字符串压缩。利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。比如,字符串aabcccccaaa会变为a2b1c5a3。若“压缩”后的字符串没有变短,则返回原先的字符串。你可以假设字符串中只包含大小写英文字母(a至z)。示例1:输入:"aabcccccaaa"输出:"a2b1c5a3"示例2:输入:"abbccd"输出:"abbccd"解释:"abbcc...原创 2020-03-16 10:24:50 · 329 阅读 · 0 评论 -
Leetcode--695. 岛屿的最大面积
给定一个包含了一些 0 和 1的非空二维数组grid, 一个岛屿是由四个方向 (水平或垂直) 的1(代表土地) 构成的组合。你可以假设二维矩阵的四个边缘都被水包围着。找到给定的二维数组中最大的岛屿面积。(如果没有岛屿,则返回面积为0。)示例 1:[[0,0,1,0,0,0,0,1,0,0,0,0,0],[0,0,0,0,0,0,0,1,1,1,0,0,0],[0,1...原创 2020-03-15 13:07:16 · 151 阅读 · 0 评论 -
Leetcode--76. 最小覆盖子串
给你一个字符串 S、一个字符串 T,请在字符串 S 里面找出:包含 T 所有字母的最小子串。示例:输入: S = "ADOBECODEBANC", T = "ABC"输出: "BANC"说明:如果 S 中不存这样的子串,则返回空字符串 ""。如果 S 中存在这样的子串,我们保证它是唯一的答案。提交的代码:classSolution{publicStrin...原创 2020-01-17 14:45:34 · 155 阅读 · 0 评论 -
Leetcode--22. 括号生成
给出n代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。例如,给出n = 3,生成结果为:[ "((()))", "(()())", "(())()", "()(())", "()()()"]提交的代码:classSolution{publicList<String>generateParen...原创 2020-01-11 13:39:51 · 171 阅读 · 0 评论