leetcode
leetcode 题解
zhangxiaojiakele
这个作者很懒,什么都没留下…
展开
-
leetcode:由斜杠划分区域
题目来源:力扣题目描述:在由 1 x 1 方格组成的 N x N 网格 grid 中,每个 1 x 1 方块由 /、\ 或空格构成。这些字符会将方块划分为一些共边的区域。(请注意,反斜杠字符是转义的,因此 \ 用 “\” 表示。)。返回区域的数目。=============================================示例 1:输入:[" /",“/ "]...原创 2020-05-07 14:19:12 · 273 阅读 · 0 评论 -
leetcode:不邻接植花
题目来源:力扣题目介绍:有 N 个花园,按从 1 到 N 标记。在每个花园中,你打算种下四种花之一。paths[i] = [x, y] 描述了花园 x 到花园 y 的双向路径。另外,没有花园有 3 条以上的路径可以进入或者离开。你需要为每个花园选择一种花,使得通过路径相连的任何两个花园中的花的种类互不相同。以数组形式返回选择的方案作为答案 answer,其中 answer[i] 为在...原创 2020-05-04 09:40:22 · 361 阅读 · 0 评论 -
leetcode:二叉搜索树转化为双向循环链表
题目来源:力扣题目描述输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。审题:题目要求我们将一棵二叉搜索树转化为双向循环链表.由于二叉搜索树的中序遍历结果递增有序,因此我们可以考虑中序处理每一个节点,相当于我们从头构建双向循环链表.我们可以先构建一个双向链表,然后在将链表的首尾节点相连,构成双向循环链表.为了构建双向...原创 2020-04-14 17:46:29 · 483 阅读 · 0 评论 -
leetcode:为运算表达式设计优先级
题目来源:力扣题目描述给定一个含有数字和运算符的字符串,为表达式添加括号,改变其运算优先级以求出不同的结果。你需要给出所有可能的组合的结果。有效的运算符号包含 +, - 以及 * 。============================================================示例 1:输入: “2-1-1”输出: [0, 2]解释:((2-1)-1) =...原创 2020-04-14 14:59:37 · 322 阅读 · 0 评论 -
leetcode:剪绳子
题目来源:力扣题目介绍给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]…k[m] 。请问 k[0]k[1]…*k[m] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。==============================...原创 2020-04-12 15:42:49 · 515 阅读 · 0 评论 -
leetcode: 最低票价
题目来源:力扣题目介绍:在一个火车旅行很受欢迎的国度,你提前一年计划了一些火车旅行。在接下来的一年里,你要旅行的日子将以一个名为 days 的数组给出。每一项是一个从 1 到 365 的整数。火车票有三种不同的销售方式:一张为期一天的通行证售价为 costs[0] 美元;一张为期七天的通行证售价为 costs[1] 美元;一张为期三十天的通行证售价为 costs[2] 美元。通行证...原创 2020-04-12 14:40:47 · 438 阅读 · 0 评论 -
leetcode:二进制中1的个数
题目来源:力扣题目描述:请实现一个函数,输入一个整数,输出该数二进制表示中 1 的个数。例如,把 9 表示成二进制是 1001,有 2 位是 1。因此,如果输入 9,则该函数输出 2。============================================================示例 1:输入:00000000000000000000000000001011输...原创 2020-04-11 22:38:06 · 316 阅读 · 0 评论 -
leetcode:叶值的最小代价生成树
题目来源:力扣题目介绍:给你一个正整数数组 arr,考虑所有满足以下条件的二叉树:每个节点都有 0 个或是 2 个子节点。数组 arr 中的值与树的中序遍历中每个叶节点的值一一对应。(知识回顾:如果一个节点有 0 个子节点,那么该节点为叶节点。)每个非叶节点的值等于其左子树和右子树中叶节点的最大值的乘积。在所有这样的二叉树中,返回每个非叶节点的值的最小可能总和。这个和的值是一个 32...原创 2020-04-11 21:49:51 · 455 阅读 · 0 评论 -
leetcode:等差数列划分
题目来源:力扣题目介绍如果一个数列至少有三个元素,并且任意两个相邻元素之差相同,则称该数列为等差数列。========================================================示例:A = [1, 2, 3, 4]返回: 3, A 中有三个子等差数组: [1, 2, 3], [2, 3, 4] 以及自身 [1, 2, 3, 4]。=======...原创 2020-04-11 16:29:24 · 470 阅读 · 0 评论 -
leetcode:回文子串
题目来源:力扣题目介绍:给定一个字符串,你的任务是计算这个字符串中有多少个回文子串。具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被计为是不同的子串。=============================================================示例 1:输入: “abc”输出: 3解释: 三个回文子串: “a”, “b”, “c”.示...原创 2020-04-11 14:14:03 · 229 阅读 · 0 评论 -
leetcode:使用最小花费爬楼梯
题目来源:力扣题目介绍:数组的每个索引做为一个阶梯,第 i个阶梯对应着一个非负数的体力花费值 costi。每当你爬上一个阶梯你都要花费对应的体力花费值,然后你可以选择继续爬一个阶梯或者爬两个阶梯。您需要找到达到楼层顶部的最低花费。在开始时,你可以选择从索引为 0 或 1 的元素作为初始阶梯。================================================...原创 2020-04-11 12:08:30 · 243 阅读 · 0 评论 -
leetcode:我能赢吗
题目来源:力扣题目介绍:在 “100 game” 这个游戏中,两名玩家轮流选择从 1 到 10 的任意整数,累计整数和,先使得累计整数和达到 100 的玩家,即为胜者。如果我们将游戏规则改为 “玩家不能重复使用整数” 呢?例如,两个玩家可以轮流从公共整数池中抽取从 1 到 15 的整数(不放回),直到累计整数和 >= 100。给定一个整数 maxChoosableInteger ...原创 2020-04-10 23:26:51 · 461 阅读 · 0 评论 -
leetcode:买卖股票最佳时机含手续费
题目来源:力扣题目介绍:给定一个整数数组 prices,其中第 i 个元素代表了第 i 天的股票价格 ;非负整数 fee 代表了交易股票的手续费用。你可以无限次地完成交易,但是你每次交易都需要付手续费。如果你已经购买了一个股票,在卖出它之前你就不能再继续购买股票了。返回获得利润的最大值。示例 1:输入: prices = [1, 3, 2, 8, 4, 9], fee = 2输出:...原创 2020-04-10 20:41:59 · 277 阅读 · 0 评论 -
leetcode:三角形最小路径和
题目来源:力扣题目描述:给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。例如,给定三角形:[[2],[3,4],[6,5,7],[4,1,8,3]]自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。说明:如果你可以只使用 O(n) 的额外空间(n 为三角形的总行数)来解决这个问题,那么你的算法会很加分。审题:对...原创 2020-04-10 12:50:36 · 407 阅读 · 0 评论 -
leetcode:不同的二叉搜索树
题目来源:力扣题目介绍:给定一个整数 n,求以 1 … n 为节点组成的二叉搜索树有多少种?示例:输入: 3输出: 5解释:给定 n = 3, 一共有 5 种不同结构的二叉搜索树.审题:考虑对于从iii到jjj的节点序列,我们可以选择iii到jjj的任意一个值作为二叉搜索树根节点,假设选择kkk作为根节点,则此时左子树的有节点序列iii到k−1k-1k−1构成,右子树由节点k...原创 2020-04-09 17:53:51 · 155 阅读 · 0 评论 -
leetcode:礼物的最大价值
题目来源:力扣题目描述:在一个 m*n 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值,请计算你最多能拿到多少价值的礼物?=============================================示例 1:输入:[[1,3...原创 2020-04-09 11:52:01 · 359 阅读 · 0 评论 -
leetcode:石子游戏II
题目来源:力扣题目介绍:亚历克斯和李继续他们的石子游戏。许多堆石子 排成一行,每堆都有正整数颗石子 piles[i]。游戏以谁手中的石子最多来决出胜负。亚历克斯和李轮流进行,亚历克斯先开始。最初,M = 1。在每个玩家的回合中,该玩家可以拿走剩下的 前 X 堆的所有石子,其中 1 <= X <= 2M。然后,令 M = max(M, X)。游戏一直持续到所有石子都被拿走。...原创 2020-04-09 09:24:07 · 202 阅读 · 0 评论 -
leetcode:石子游戏
题目来源:力扣题目介绍:亚历克斯和李用几堆石子在做游戏。偶数堆石子排成一行,每堆都有正整数颗石子 piles[i] 。游戏以谁手中的石子最多来决出胜负。石子的总数是奇数,所以没有平局。亚历克斯和李轮流进行,亚历克斯先开始。 每回合,玩家从行的开始或结束处取走整堆石头。 这种情况一直持续到没有更多的石子堆为止,此时手中石子最多的玩家获胜。假设亚历克斯和李都发挥出最佳水平,当亚历克斯赢得比...原创 2020-04-08 13:11:24 · 278 阅读 · 0 评论 -
leetcode:比特位计数
题目来源:力扣题目描述:给定一个非负整数 num。对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回。================================================示例 1:输入: 2输出: [0,1,1]示例 2:输入: 5输出: [0,1,1,2,1,2]===============...原创 2020-04-07 22:21:01 · 299 阅读 · 0 评论 -
leetcode:按摩师
题目来源:力扣题目介绍:一个有名的按摩师会收到源源不断的预约请求,每个预约都可以选择接或不接。在每次预约服务之间要有休息时间,因此她不能接受相邻的预约。给定一个预约请求序列,替按摩师找到最优的预约集合(总预约时间最长),返回总的分钟数。注意:本题相对原题稍作改动=============================================================示例...原创 2020-04-07 12:01:32 · 306 阅读 · 0 评论 -
leetcode: 连续子数组的最大和
题目来源:力扣题目描述:输入一个整型数组,数组里有正数也有负数。数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。=============================================示例1:输入: nums = [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释: 连续子数组 [4,-1,2,1] 的和最...原创 2020-04-07 09:55:17 · 600 阅读 · 0 评论 -
leetcode:除数博弈
题目来源:力扣这是我做的第一道动态规划题目,今天看了一上午算法导论动态规划那一章,下午准备检验一下自己的理解.虽然这道题难度为简单级别,但在自己独立思考下做出来了,感觉美滋滋!题目描述:爱丽丝和鲍勃一起玩游戏,他们轮流行动。爱丽丝先手开局。最初,黑板上有一个数字 N 。在每个玩家的回合,玩家需要执行以下操作:选出任一 x,满足 0 < x < N 且 N % x == 0...原创 2020-04-06 17:47:07 · 141 阅读 · 0 评论 -
leetcode:距离原点最近的K个点
题目来源:力扣题目描述:我们有一个由平面上的点组成的列表 points。需要从中找出 K 个距离原点 (0, 0) 最近的点。(这里,平面上两点之间的距离是欧几里德距离。)你可以按任何顺序返回答案。除了点坐标的顺序之外,答案确保是唯一的。审题:该题属于典型的TopK问题,我们在之前已经讨论过基于优先队列的算法,求一堆元素中的TopK元素.在那篇文章中,我们手动使用堆结构实现了优先队...原创 2020-04-05 21:18:21 · 1365 阅读 · 0 评论 -
leetcode:最小的k个数
题目来源:力扣题目描述:输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。审题:对于TopM问题,当数据量较小时,可以直接对数据进行排序,然后选择前k个数值即可.而对于海量大数据,例如十亿,百亿的数据量,如果要找出前10个数值,则使用排序算法是不现实的.因为海量的数据时可能无法一次性装进内存,更别提后...原创 2020-04-05 16:12:13 · 331 阅读 · 0 评论 -
leetcode:实现 Trie (前缀树)
题目来源:力扣题目描述:实现一个 Trie (前缀树),包含 insert, search, 和 startsWith 这三个操作。=============================================================示例:Trie trie = new Trie();trie.insert(“apple”);trie.search(“apple...原创 2020-04-05 12:18:50 · 212 阅读 · 0 评论 -
leetcode:词典中最长的单词
题目来源:力扣题目描述:给出一个字符串数组words组成的一本英语词典。从中找出最长的一个单词,该单词是由words词典中其他单词逐步添加一个字母组成。若其中有多个可行的答案,则返回答案中字典序最小的单词。若无答案,则返回空字符串。================================================================示例 1:输入:word...原创 2020-04-04 20:41:15 · 748 阅读 · 0 评论 -
leetcode:朋友圈
题目来源:力扣题目描述:班上有 N 名学生。其中有些人是朋友,有些则不是。他们的友谊具有是传递性。如果已知 A 是 B 的朋友,B 是 C 的朋友,那么我们可以认为 A 也是 C 的朋友。所谓的朋友圈,是指所有朋友的集合。给定一个 N * N 的矩阵 M,表示班级中学生之间的朋友关系。如果M[i][j] = 1,表示已知第 i 个和 j 个学生互为朋友关系,否则为不知道。你必须输出所有学生...原创 2020-03-30 20:55:32 · 657 阅读 · 0 评论 -
leetcode:累加数
题目来源:力扣题目介绍:累加数是一个字符串,组成它的数字可以形成累加序列。一个有效的累加序列必须至少包含 3 个数。除了最开始的两个数以外,字符串中的其他数都等于它之前两个数相加的和。给定一个只包含数字 ‘0’-‘9’ 的字符串,编写一个算法来判断给定输入是否是累加数。说明: 累加序列里的数不会以 0 开头,所以不会出现 1, 2, 03 或者 1, 02, 3 的情况。======...原创 2020-03-30 11:58:18 · 317 阅读 · 0 评论 -
leetcode:二进制手表
题目来源:力扣题目描述:二进制手表顶部有 4 个 LED 代表小时(0-11),底部的 6 个 LED 代表分钟(0-59)。每个 LED 代表一个 0 或 1,最低位在右侧。0011011001代表3:25给定一个非负整数 n 代表当前 LED 亮着的数量,返回所有可能的时间。注意事项:输出的顺序没有要求。小时不会以零开头,比如 “01:00” 是不允许的,应为 “1:00”。...原创 2020-03-30 10:52:53 · 223 阅读 · 0 评论 -
leetcode:优美的排列
题目来源:力扣题目介绍:假设有从 1 到 N 的 N 个整数,如果从这 N 个数字中成功构造出一个数组,使得数组的第 i 位 (1 <= i <= N) 满足如下两个条件中的一个,我们就称这个数组为一个优美的排列。条件:第 i 位的数字能被 i 整除i 能被第 i 位上的数字整除现在给定一个整数 N,请问可以构造多少个优美的排列?=====================...原创 2020-03-29 22:57:02 · 307 阅读 · 0 评论 -
leetcode:字母大小写全排列
题目来源:力扣题目介绍:给定一个字符串S,通过将字符串S中的每个字母转变大小写,我们可以获得一个新的字符串。返回所有可能得到的字符串集合。=========================================================示例:输入: S = “a1b2”输出: [“a1b2”, “a1B2”, “A1b2”, “A1B2”]输入: S = “3z4”...原创 2020-03-29 22:26:24 · 572 阅读 · 0 评论 -
leetcode:活字印刷
题目来源:力扣题目描述:你有一套活字字模 tiles,其中每个字模上都刻有一个字母 tiles[i]。返回你可以印出的非空字母序列的数目。====================================================输入:“AAB”输出:8解释:可能的序列为 “A”, “B”, “AA”, “AB”, “BA”, “AAB”, “ABA”, “BAA”。=...原创 2020-03-29 17:40:44 · 567 阅读 · 0 评论 -
leetcode:字母组合迭代器
题目来源:力扣题目描述:请你设计一个迭代器类,包括以下内容:一个构造函数,输入参数包括:一个 有序且字符唯一 的字符串 characters(该字符串只包含小写英文字母)和一个数字 combinationLength 。函数 next() ,按 字典序 返回长度为 combinationLength 的下一个字母组合。函数 hasNext() ,只有存在长度为 combinationL...原创 2020-03-29 16:25:36 · 273 阅读 · 0 评论 -
leetcode:幂集
题目来源:力扣题目描述:幂集。编写一种方法,返回某集合的所有子集。集合中不包含重复的元素。说明:解集不能包含重复的子集。示例:=====================================================输入: nums = [1,2,3]输出:[[3],[1],[2],[1,2,3],[1,3],[2,3],[1,2],[]]==...原创 2020-03-29 15:22:29 · 389 阅读 · 0 评论 -
leetcode:构建可行括号
题目来源:力扣题目描述:括号。设计一种算法,打印n对括号的所有合法的(例如,开闭一一对应)组合。说明:解集不能包含重复的子集。例如,给出 n = 3,生成结果为:[“((()))”,“(()())”,“(())()”,“()(())”,“()()()”]审题:考虑逐位添加字符构建括号字符串,每一步我们需要判断是否可以添加左括号,是否可以添加右括号.分析合法括号字符串的...原创 2020-03-28 13:22:01 · 241 阅读 · 0 评论 -
leetcode: 串联字符串的最大长度
题目来源:力扣题目介绍:给定一个字符串数组 arr,字符串 s 是将 arr 某一子序列字符串连接所得的字符串,如果 s 中的每一个字符都只出现过一次,那么它就是一个可行解。请返回所有可行解 s 中最长长度。-======================================示例 1:输入:arr = [“un”,“iq”,“ue”]输出:4解释:所有可能的串联组合是 ...原创 2020-03-28 12:27:20 · 552 阅读 · 0 评论 -
leetcode:黄金矿工
题目来源:力扣题目描述:你要开发一座金矿,地质勘测学家已经探明了这座金矿中的资源分布,并用大小为 m * n 的网格 grid 进行了标注。每个单元格中的整数就表示这一单元格中的黄金数量;如果该单元格是空的,那么就是 0。为了使收益最大化,矿工需要按以下规则来开采黄金:每当矿工进入一个单元,就会收集该单元格中的所有黄金。矿工每次可以从当前位置向上下左右四个方向走。每个单元格只能被开采...原创 2020-03-28 10:30:14 · 405 阅读 · 0 评论 -
leetcode:删除给定值的叶子节点
题目来源:力扣题目描述:给你一棵以 root 为根的二叉树和一个整数 target ,请你删除所有值为 target 的 叶子节点 。注意,一旦删除值为 target 的叶子节点,它的父节点就可能变成叶子节点;如果新叶子节点的值恰好也是 target ,那么这个节点也应该被删除。也就是说,你需要重复此过程直到不能继续删除。审题:由于删除的是叶子节点,且删除是自底向上的过程.因此考虑...原创 2020-03-27 20:07:03 · 536 阅读 · 0 评论 -
leetcode:找出克隆二叉树中的相同节点
题目来源:力扣题目介绍:给你两棵二叉树,原始树 original 和克隆树 cloned,以及一个位于原始树 original 中的目标节点 target。其中,克隆树 cloned 是原始树 original 的一个 副本 。请找出在树 cloned 中,与 target 相同 的节点,并返回对该节点的引用(在 C/C++ 等有指针的语言中返回 节点指针,其他语言返回节点本身)。审...原创 2020-03-27 13:54:46 · 485 阅读 · 0 评论 -
leetcode:最小高度树
题目来源:力扣题目描述:给定一个有序整数数组,元素各不相同且按升序排列,编写一个算法,创建一棵高度最小的二叉搜索树。审题:由于数组已经是有序数组,所以构建二叉搜索树并不难,基于二叉树的特性,我们将数组划分为两部分,递归构建其左右子树即可.对于题目中要求的高度最小,我们知道一棵平衡树是高度最小的二叉树.因此我们每次切分应当保证左右子树大小相差不超过1,基于此,根节点位置只要选择在中间位置...原创 2020-03-27 13:17:25 · 427 阅读 · 0 评论