自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(176)
  • 收藏
  • 关注

原创 LeetCode刷题笔记 面试题 17.13. 恢复空格

题目描述哦,不!你不小心把一个长篇文章中的空格、标点都删掉了,并且大写也弄成了小写。像句子"I reset the computer. It still didn’t boot!“已经变成了"iresetthecomputeritstilldidntboot”。在处理标点符号和大小写之前,你得先把它断成词语。当然了,你有一本厚厚的词典dictionary,不过,有些词没在词典里。假设文章用sen...

2020-03-31 22:46:16 615

原创 LeetCode刷题笔记 面试题 04.06. 后继者

题目描述设计一个算法,找出二叉搜索树中指定节点的“下一个”节点(也即中序后继)。如果指定节点没有对应的“下一个”节点,则返回null。示例:输入: root = [5,3,6,2,4,null,null,1], p = 4输出: 5Sample Codeclass Solution { public TreeNode inorderSuccessor(TreeNode ro...

2020-03-28 00:28:44 280

原创 LeetCode刷题笔记 116. 填充每个节点的下一个右侧节点指针

题目描述给定一个完美二叉树,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下:struct Node {int val;Node *left;Node *right;Node *next;}填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。初始状态下,所有 next 指针都被设置为 NU...

2020-03-27 23:21:35 186

原创 LeetCode刷题笔记 1110. 删点成林

题目描述给出二叉树的根节点 root,树上每个节点都有一个不同的值。如果节点值在 to_delete 中出现,我们就把该节点从树上删去,最后得到一个森林(一些不相交的树构成的集合)。返回森林中的每棵树。你可以按任意顺序组织答案。示例:输入:root = [1,2,3,4,5,6,7], to_delete = [3,5]输出:[[1,2,null,4],[6],[7]]Sample...

2020-03-26 23:42:50 206

原创 LeetCode刷题笔记 979. 在二叉树中分配硬币

题目描述给定一个有 N 个结点的二叉树的根结点 root,树中的每个结点上都对应有 node.val 枚硬币,并且总共有 N 枚硬币。在一次移动中,我们可以选择两个相邻的结点,然后将一枚硬币从其中一个结点移动到另一个结点。(移动可以是从父结点到子结点,或者从子结点移动到父结点。)。返回使每个结点上只有一枚硬币所需的移动次数。示例:输入:[0,3,0]输出:3解释:从根结点的左子结点开...

2020-03-26 22:29:03 264

原创 LeetCode刷题笔记 959. 由斜杠划分区域

题目描述在由 1 x 1 方格组成的 N x N 网格 grid 中,每个 1 x 1 方块由 /、\ 或空格构成。这些字符会将方块划分为一些共边的区域。(请注意,反斜杠字符是转义的,因此 \ 用 “\” 表示。)。返回区域的数目。示例:总结还有不同小方块的 2-0 和 1-3 会发生连通Sample & Demo Codeclass Solution { pu...

2020-03-15 02:53:45 255

原创 LeetCode刷题笔记 面试题59 - II. 队列的最大值

题目描述请定义一个队列并实现函数 max_value 得到队列里的最大值,要求函数max_value、push_back 和 pop_front 的时间复杂度都是O(1)。若队列为空,pop_front 和 max_value 需要返回 -1示例:输入:[“MaxQueue”,“push_back”,“push_back”,“max_value”,“pop_front”,“max_val...

2020-03-07 03:32:19 131

原创 LeetCode刷题笔记 873. 最长的斐波那契子序列的长度 *

题目描述如果序列 X_1, X_2, …, X_n 满足下列条件,就说它是 斐波那契式 的:n >= 3对于所有 i + 2 <= n,都有 X_i + X_{i+1} = X_{i+2}给定一个严格递增的正整数数组形成序列,找到 A 中最长的斐波那契式的子序列的长度。如果一个不存在,返回 0 。(回想一下,子序列是从原序列 A 中派生出来的,它从 A 中删掉任意数量的...

2020-03-07 03:05:49 161

原创 LeetCode刷题笔记 面试题57 - II. 和为s的连续正数序列

题目描述输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。示例:输入:target = 9输出:[[2,3,4],[4,5]]滑动窗口class Solution { public int[][] findContinuousSequence(int target) {...

2020-03-06 20:45:19 148

原创 LeetCode刷题笔记 646. 最长数对链

题目描述给出 n 个数对。 在每一个数对中,第一个数字总是比第二个数字小。现在,我们定义一种跟随关系,当且仅当 b < c 时,数对(c, d) 才可以跟在 (a, b) 后面。我们用这种形式来构造一个数对链。给定一个对数集合,找出能够形成的最长数对链的长度。你不需要用到所有的数对,你可以以任何顺序选择其中的一些数对来构造。示例 :输入: [[1,2], [2,3], [3,4]]...

2020-03-03 21:32:10 126

原创 LeetCode刷题笔记 面试题10.01.合并排序的数组

题目描述给定两个排序后的数组 A 和 B,其中 A 的末端有足够的缓冲空间容纳 B。 编写一个方法,将 B 合并入 A 并排序。初始化 A 和 B 的元素数量分别为 m 和 n。示例:输入:A = [1,2,3,0,0,0], m = 3B = [2,5,6], n = 3输出: [1,2,2,3,5,6]Sample Codeclass Solution { ...

2020-03-03 18:56:35 125

原创 LeetCode刷题笔记 1130. 叶值的最小代价生成树

题目描述给你一个正整数数组 arr,考虑所有满足以下条件的二叉树:每个节点都有 0 个或是 2 个子节点。数组 arr 中的值与树的中序遍历中每个叶节点的值一一对应。(如果一个节点有 0 个子节点,那么该节点为叶节点。)每个非叶节点的值等于其左子树和右子树中叶节点的最大值的乘积。在所有这样的二叉树中,返回每个非叶节点的值的最小可能总和。这个和的值是一个 32 位整数。示例:输入:...

2020-03-03 18:51:46 191

原创 LeetCode刷题笔记 1140. 石子游戏 II

题目描述亚历克斯和李继续他们的石子游戏。许多堆石子 排成一行,每堆都有正整数颗石子 piles[i]。游戏以谁手中的石子最多来决出胜负。亚历克斯和李轮流进行,亚历克斯先开始。最初,M = 1。在每个玩家的回合中,该玩家可以拿走剩下的 前 X 堆的所有石子,其中 1 <= X <= 2M。然后,令 M = max(M, X)。游戏一直持续到所有石子都被拿走。假设亚历克斯和李都发...

2020-03-02 23:08:28 249

原创 LeetCode刷题笔记 1124. 表现良好的最长时间段

题目描述给你一份工作时间表 hours,上面记录着某一位员工每天的工作小时数。我们认为当员工一天中的工作小时数大于 8 小时的时候,那么这一天就是「劳累的一天」。所谓「表现良好的时间段」,意味在这段时间内,「劳累的天数」是严格 大于「不劳累的天数」。请你返回「表现良好时间段」的最大长度。示例:输入:hours = [9,9,6,0,6,6,9]输出:3解释:最长的表现良好时间段是 ...

2020-02-01 00:50:52 859

原创 LeetCode刷题笔记 923. 三数之和的多种可能

题目描述给定一个整数数组 A,以及一个整数 target 作为目标值,返回满足 i < j < k 且 A[i] + A[j] + A[k] == target 的元组 i, j, k 的数量。由于结果会非常大,请返回 结果除以 10^9 + 7 的余数。示例:输入:A = [1,1,2,2,3,3,4,4,5,5], target = 8输出:20解释:按值枚举(A[i...

2020-01-04 13:47:52 249

原创 LeetCode刷题笔记 273. 整数转换英文表示

题目描述将非负整数转换为其对应的英文表示。可以保证给定输入小于 2^(31 - 1) 。示例:输入: 1234567输出: “One Million Two Hundred Thirty Four Thousand Five Hundred Sixty Seven”Sample Code 1class Solution { private int B = 1000000000;...

2020-01-04 12:36:00 319 1

原创 LeetCode刷题笔记 777. 在LR字符串中交换相邻字符

题目描述在一个由 ‘L’ , ‘R’ 和 ‘X’ 三个字符组成的字符串(例如"RXXLRXRXL")中进行移动操作。一次移动操作指用一个"LX"替换一个"XL",或者用一个"XR"替换一个"RX"。现给定起始字符串start和结束字符串end,请编写代码,当且仅当存在一系列移动操作使得start可以转换成end时, 返回True。示例 :输入: start = “RXXLRXRXL”, en...

2020-01-03 15:51:06 258

原创 LeetCode刷题笔记 51. N皇后

题目描述n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。上图为 8 皇后问题的一种解法。给定一个整数 n,返回所有不同的 n 皇后问题的解决方案。每一种解法包含一个明确的 n 皇后问题的棋子放置方案,该方案中 ‘Q’ 和 ‘.’ 分别代表了皇后和空位。示例:输入: 4输出: [[".Q…", // 解法 1“…Q”,“Q…”,...

2019-12-16 19:53:01 114

原创 LeetCode刷题笔记 1049. 最后一块石头的重量 II

题目描述有一堆石头,每块石头的重量都是正整数。每一回合,从中选出任意两块石头,然后将它们一起粉碎。假设石头的重量分别为 x 和 y,且 x <= y。那么粉碎的可能结果如下:如果 x == y,那么两块石头都会被完全粉碎;如果 x != y,那么重量为 x 的石头将会完全粉碎,而重量为 y 的石头新重量为 y-x。最后,最多只会剩下一块石头。返回此石头最小的可能重量。如果没有石头...

2019-12-16 16:01:27 206

原创 LeetCode刷题笔记 838. 推多米诺

题目描述一行中有 N 张多米诺骨牌,我们将每张多米诺骨牌垂直竖立。在开始时,我们同时把一些多米诺骨牌向左或向右推。每过一秒,倒向左边的多米诺骨牌会推动其左侧相邻的多米诺骨牌。同样地,倒向右边的多米诺骨牌也会推动竖立在其右侧的相邻多米诺骨牌。如果同时有多米诺骨牌落在一张垂直竖立的多米诺骨牌的两边,由于受力平衡, 该骨牌仍然保持不变。就这个问题而言,我们会认为正在下降的多米诺骨牌不会对其...

2019-12-15 22:54:13 378

原创 LeetCode刷题笔记 1191. K 次串联后最大子数组之和

题目描述给你一个整数数组 arr 和一个整数 k。首先,我们要对该数组进行修改,即把原数组 arr 重复 k 次。举个例子,如果 arr = [1, 2] 且 k = 3,那么修改后的数组就是 [1, 2, 1, 2, 1, 2]。然后,请你返回修改后的数组中的最大的子数组之和。注意,子数组长度可以是 0,在这种情况下它的总和也是 0。由于 结果可能会很大,所以需要 模(mod) 10...

2019-12-12 23:08:43 295

原创 LeetCode刷题笔记 523. 连续的子数组和

题目描述给定一个包含非负数的数组和一个目标整数 k,编写一个函数来判断该数组是否含有连续的子数组,其大小至少为 2,总和为 k 的倍数,即总和为 n*k,其中 n 也是一个整数。示例 1:输入: [23,2,4,6,7], k = 6输出: True解释: [2,4] 是一个大小为 2 的子数组,并且和为 6。Sample Code 1在每个索引位置i, 计算当前和对k的mod值, ...

2019-12-12 22:37:28 172

原创 LeetCode刷题笔记 813. 最大平均值和的分组

题目描述我们将给定的数组 A 分成 K 个相邻的非空子数组 ,我们的分数由每个子数组内的平均值的总和构成。计算我们所能得到的最大分数是多少。注意我们必须使用 A 数组中的每一个数进行分组,并且分数不一定需要是整数。示例:输入:A = [9,1,2,3,9]K = 3输出: 20解释:A 的最优分组是[9], [1, 2, 3], [9]. 得到的分数是 9 + (1 + 2 + ...

2019-12-10 21:28:40 126

原创 LeetCode刷题笔记 650. 只有两个键的键盘

题目描述最初在一个记事本上只有一个字符 ‘A’。你每次可以对这个记事本进行两种操作:Copy All (复制全部) : 你可以复制这个记事本中的所有字符(部分的复制是不允许的)。Paste (粘贴) : 你可以粘贴你上一次复制的字符。给定一个数字 n 。你需要使用最少的操作次数,在记事本中打印出恰好 n 个 ‘A’。输出能够打印出 n 个 ‘A’ 的最少操作次数。示例:输入: 3输...

2019-12-10 04:26:57 284

原创 LeetCode刷题笔记 983. 最低票价

题目描述在一个火车旅行很受欢迎的国度,你提前一年计划了一些火车旅行。在接下来的一年里,你要旅行的日子将以一个名为 days 的数组给出。每一项是一个从 1 到 365 的整数。火车票有三种不同的销售方式:一张为期一天的通行证售价为 costs[0] 美元;一张为期七天的通行证售价为 costs[1] 美元;一张为期三十天的通行证售价为 costs[2] 美元。通行证允许数天无限制的旅...

2019-12-10 03:42:00 123

原创 LeetCode刷题笔记 718. 最长重复子数组

题目描述给两个整数数组 A 和 B ,返回两个数组中公共的、长度最长的子数组的长度。示例:输入:A: [1,2,3,2,1]B: [3,2,1,4,7]输出: 3解释:长度最长的公共子数组是 [3, 2, 1]。Sample Code 1class Solution { public int findLength(int[] A, int[] B) { ...

2019-12-10 03:38:55 85

原创 LeetCode刷题笔记 516. 最长回文子序列

题目描述给定一个字符串s,找到其中最长的回文子序列。示例:输入:“bbbab”输出:4一个可能的最长回文子序列为 “bbbb”。Sample Code 1class Solution { public int longestPalindromeSubseq(String s) { int len = s.length(); int[][] ...

2019-12-09 12:29:23 126

原创 LeetCode刷题笔记 813. 最大平均值和的分组

题目描述我们将给定的数组 A 分成 K 个相邻的非空子数组 ,我们的分数由每个子数组内的平均值的总和构成。计算我们所能得到的最大分数是多少。注意我们必须使用 A 数组中的每一个数进行分组,并且分数不一定需要是整数。示例:输入:A = [9,1,2,3,9]K = 3输出: 20解释:A 的最优分组是[9], [1, 2, 3], [9]. 得到的分数是 9 + (1 + 2 + ...

2019-12-04 20:11:12 250

原创 LeetCode刷题笔记 638. 大礼包

题目描述在LeetCode商店中, 有许多在售的物品。然而,也有一些大礼包,每个大礼包以优惠的价格捆绑销售一组物品。现给定每个物品的价格,每个大礼包包含物品的清单,以及待购物品清单。请输出确切完成待购清单的最低花费。每个大礼包的由一个数组中的一组数据描述,最后一个数字代表大礼包的价格,其他数字分别表示内含的其他种类物品的数量。任意大礼包可无限次购买。你不可以购买超出待购清单的物品,即使...

2019-12-03 11:32:35 396

原创 LeetCode刷题笔记 494. 目标和

题目描述给定一个非负整数数组,a1, a2, …, an, 和一个目标数,S。现在你有两个符号 + 和 -。对于数组中的任意一个整数,你都可以从 + 或 -中选择一个符号添加在前面。返回可以使最终数组和为目标数 S 的所有添加符号的方法数。示例:输入: nums: [1, 1, 1, 1, 1], S: 3输出: 5解释:-1+1+1+1+1 = 3+1-1+1+1+1 = 3+...

2019-12-02 20:30:21 141

原创 LeetCode刷题笔记 486. 预测赢家

题目描述给定一个表示分数的非负整数数组。 玩家1从数组任意一端拿取一个分数,随后玩家2继续从剩余数组任意一端拿取分数,然后玩家1拿,……。每次一个玩家只能拿取一个分数,分数被拿取之后不再可取。直到没有剩余分数可取时游戏结束。最终获得分数总和最多的玩家获胜。给定一个表示分数的数组,预测玩家1是否会成为赢家。你可以假设每个玩家的玩法都会使他的分数最大化。示例:输入: [1, 5, 233, 7...

2019-12-02 20:27:00 129

原创 LeetCode刷题笔记 简单题优秀题解集合(800~1200)

1071. 字符串的最大公因子对于字符串 S 和 T,只有在 S = T + … + T(T 与自身连接 1 次或多次)时,我们才认定 “T 能除尽 S”。返回字符串 X,要求满足 X 能除尽 str1 且 X 能除尽 str2。示例 1:输入:str1 = “ABCABC”, str2 = “ABC”输出:“ABC”示例 2:输入:str1 = “LEET”, str2 = “CO...

2019-11-26 19:32:51 234

原创 LeetCode刷题笔记 413. 等差数列划分

2019-11-19 10:58:51 206

原创 LeetCode刷题笔记 简单题优秀题解集合(500~800)

501. 二叉搜索树中的众数给定一个有相同值的二叉搜索树(BST),找出 BST 中的所有众数(出现频率最高的元素)。总结二叉搜索树的中序遍历是递增顺序,把问题转换为求递增数组众数即可。class Solution { int preVal = 0, curTimes = 0, maxTimes = 0; ArrayList<Integer> list = ne...

2019-11-10 11:34:55 345

原创 LeetCode刷题笔记 简单题优秀题解集合(200~500)

205. 同构字符串给定两个字符串 s 和 t,判断它们是否是同构的。如果 s 中的字符可以被替换得到 t ,那么这两个字符串是同构的。所有出现的字符都必须用另一个字符替换,同时保留字符的顺序。两个字符不能映射到同一个字符上,但字符可以映射自己本身。示例:输入: s = “egg”, t = “add”输出: trueclass Solution { public boole...

2019-11-05 14:42:48 187

原创 LeetCode刷题笔记 114. 二叉树展开为链表

题目描述给定一个二叉树,原地将它展开为链表。Sample Code (后序遍历)class Solution { private TreeNode node; public void flatten(TreeNode root) { if(root == null) return; flatten(root.right); flatten(root.left); root...

2019-10-22 09:52:36 163

原创 LeetCode刷题笔记 877. 石子游戏

题目描述亚历克斯和李用几堆石子在做游戏。偶数堆石子排成一行,每堆都有正整数颗石子 piles[i] 。游戏以谁手中的石子最多来决出胜负。石子的总数是奇数,所以没有平局。亚历克斯和李轮流进行,亚历克斯先开始。 每回合,玩家从行的开始或结束处取走整堆石头。 这种情况一直持续到没有更多的石子堆为止,此时手中石子最多的玩家获胜。假设亚历克斯和李都发挥出最佳水平,当亚历克斯赢得比赛时返回 true ...

2019-10-21 22:43:54 147

原创 LeetCode刷题笔记 241. 为运算表达式设计优先级

题目描述给定一个含有数字和运算符的字符串,为表达式添加括号,改变其运算优先级以求出不同的结果。你需要给出所有可能的组合的结果。有效的运算符号包含 +, - 以及 * 。示例:输入: “23-45”输出: [-34, -14, -10, -10, 10]解释:(2*(3-(45))) = -34((23)-(45)) = -14((2(3-4))5) = -10(2((3-4)5)...

2019-10-21 19:50:25 150

原创 LeetCode刷题笔记 513. 找树左下角的值

题目描述给定一个二叉树,在树的最后一行找到最左边的值。Sample Code 1class Solution { private int res; private int max = Integer.MIN_VALUE; public int findBottomLeftValue(TreeNode root) { dfs(root, 0); ...

2019-10-21 17:17:57 194

原创 LeetCode刷题笔记 894. 所有可能的满二叉树

题目描述满二叉树是一类二叉树,其中每个结点恰好有 0 或 2 个子结点。返回包含 N 个结点的所有可能满二叉树的列表。 答案的每个元素都是一个可能树的根结点。答案中每个树的每个结点都必须有 node.val=0。你可以按任何顺序返回树的最终列表。示例:输入:7输出:[[0,0,0,null,null,0,0,null,null,0,0],[0,0,0,null,null,0,0,0,...

2019-10-21 16:58:18 126

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除