LC 827. 最大人工岛 题目描述这是 LeetCode 上的 827. 最大人工岛 ,难度为 困难。 给你一个大小为 n x n 二进制矩阵 grid 。最多 只能将一格 0 变成 1 。 返回执行此操作后,grid 中最大的岛屿面积是多少? 岛屿 由一组上、下、左、右四个方向相连的 1 形成。 示例 1:12345输入: grid = [[1, 0], [0, 1]]输出: 3解释: 将一格0变成1,最终连通两个小岛得 2022-09-18 并查集 枚举
LC 1624. 两个相同字符之间的最长子字符串 题目描述这是 LeetCode 上的 1624. 两个相同字符之间的最长子字符串 ,难度为 简单。 给你一个字符串 s,请你返回 两个相同字符之间的最长子字符串的长度 ,计算长度时不含这两个字符。如果不存在这样的子字符串,返回 -1 。 子字符串 是字符串中的一个连续字符序列。 示例 1:12345输入:s = "aa"输出:0解释:最优的子字符串是两个 'a 2022-09-17 模拟
LC 850. 矩形面积 II 题目描述这是 LeetCode 上的 850. 矩形面积 II ,难度为 困难。 我们给出了一个(轴对齐的)二维矩形列表 rectangles。 对于 $rectangle[i] = [x1, y_1, x_2, y_2]$,其中$(x_1, y_1)$ 是矩形 i 左下角的坐标,$ (x{i1}, y{i1})$ 是该矩形 左下角 的坐标,$ (x{i2}, y_{i2})$ 是该矩形 右上角 2022-09-16 扫描线
LC 672. 灯泡开关 Ⅱ 题目描述这是 LeetCode 上的 672. 灯泡开关 Ⅱ ,难度为 中等。 房间中有 n 只已经打开的灯泡,编号从 1 到 n 。 墙上挂着 4 个开关 ,这 4 个开关各自都具有不同的功能,其中: 开关 1 :反转当前所有灯的状态(即开变为关,关变为开) 开关 2 :反转编号为偶数的灯的状态(即 2, 4, ...) 开关 3 :反转编号为奇数的灯的状态(即 1, 3, ...) 开关 4 2022-09-15 脑筋急转弯 找规律
LC 1619. 删除某些元素后的数组均值 题目描述这是 LeetCode 上的 1619. 删除某些元素后的数组均值 ,难度为 简单。 给你一个整数数组 arr,请你删除最小 5% 的数字和最大 5% 的数字后,剩余数字的平均值。 与 标准答案 误差在 $10^{-5}$ 的结果都被视为正确结果。 示例 1:12345输入:arr = [1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3]输出:2.00000解 2022-09-14 模拟 排序
LC 1092. 最短公共超序列 题目描述这是 LeetCode 上的 1092. 最短公共超序列 ,难度为 困难。 给出两个字符串 str1 和 str2,返回同时以 str1 和 str2 作为子序列的最短字符串。如果答案不止一个,则可以返回满足条件的任意一个答案。 (如果从字符串 T 中删除一些字符(也可能不删除,并且选出的这些字符可以位于 T 中的 任意位置),可以得到字符串 S,那么 S 就是 T 的子序列) 示例:12 2022-09-13 动态规划 序列 DP 双指针 最长公共子序列 LCS 构造
LC 670. 最大交换 题目描述这是 LeetCode 上的 670. 最大交换 ,难度为 中等。 给定一个非负整数,你至多可以交换一次数字中的任意两位。 返回你能得到的最大值。 示例 1 :12345输入: 2736输出: 7236解释: 交换数字2和数字7。示例 2 :12345输入: 9973输出: 9973解释: 不需要交换。注意: 给定数字的范围是 $[0, 10^8]$ 模拟根据题意,我们应当将大的数放 2022-09-13 模拟
LC 1608. 特殊数组的特征值 题目描述这是 LeetCode 上的 1608. 特殊数组的特征值 ,难度为 简单。 给你一个非负整数数组 nums。如果存在一个数 x ,使得 nums 中恰好有 x 个元素 大于或者等于 x ,那么就称 nums 是一个 特殊数组 ,而 x 是该数组的 特征值 。 注意: x 不必 是 nums 的中的元素。 如果数组 nums 是一个 特殊数组 ,请返回它的特征值 x 。否则,返回 -1 。 2022-09-12 模拟 二分 枚举 排序 计数
LC 857. 雇佣 K 名工人的最低成本 题目描述这是 LeetCode 上的 857. 雇佣 K 名工人的最低成本 ,难度为 困难。 有 n 名工人。 给定两个数组 quality 和 wage ,其中,quality[i] 表示第 i 名工人的工作质量,其最低期望工资为 wage[i] 。 现在我们想雇佣 k 名工人组成一个工资组。在雇佣 一组 k 名工人时,我们必须按照下述规则向他们支付工资: 对工资组中的每名工人,应当按其工作质 2022-09-11 优先队列(堆) 枚举
LC 669. 修剪二叉搜索树 题目描述这是 LeetCode 上的 669. 修剪二叉搜索树 ,难度为 中等。 给你二叉搜索树的根节点 root,同时给定最小边界 low 和最大边界 high。通过修剪二叉搜索树,使得所有节点的值在 $[low, high]$ 中。修剪树 不应该 改变保留在树中的元素的相对结构 (即,如果没有被移除,原有的父代子代关系都应当保留)。 可以证明,存在 唯一的答案 。 所以结果应当返回修剪好的二叉 2022-09-10 BST 二叉树 递归 迭代
LC 1598. 文件夹操作日志搜集器 题目描述这是 LeetCode 上的 1598. 文件夹操作日志搜集器 ,难度为 简单。 每当用户执行变更文件夹操作时,LeetCode 文件系统都会保存一条日志记录。 下面给出对变更操作的说明: "../" :移动到当前文件夹的父文件夹。如果已经在主文件夹下,则 继续停留在当前文件夹 。 "./" :继续停留在当前文件夹。 "x/" 2022-09-08 模拟 栈 计数
LC 667. 优美的排列 II 题目描述这是 LeetCode 上的 667. 优美的排列 II ,难度为 中等。 给你两个整数 n 和 k ,请你构造一个答案列表 answer,该列表应当包含从 1 到 n 的 n 个不同正整数,并同时满足下述条件: 假设该列表是 $answer = [a1, a_2, a_3, … , a_n]$ ,那么列表 $[|a_1 - a_2|, |a_2 - a_3|, |a_3 - a_4|, 2022-09-08 脑筋急转弯 构造
LC 1592. 重新排列单词间的空格 题目描述这是 LeetCode 上的 1592. 重新排列单词间的空格 ,难度为 简单。 给你一个字符串 text,该字符串由若干被空格包围的单词组成。每个单词由一个或者多个小写英文字母组成,并且两个单词之间至少存在一个空格。题目测试用例保证 text 至少包含一个单词 。 请你重新排列空格,使每对相邻单词之间的空格数目都 相等 ,并尽可能 最大化 该数目。如果不能重新平均分配所有空格,请 将多余 2022-09-07 模拟 双指针
LC 828. 统计子串中的唯一字符 题目描述这是 LeetCode 上的 828. 统计子串中的唯一字符 ,难度为 困难。 我们定义了一个函数 countUniqueChars(s) 来统计字符串 s 中的唯一字符,并返回唯一字符的个数。 例如:s = "LEETCODE" ,则其中 "L", "T","C","O","D& 2022-09-06 模拟 数学 线性 DP
LC 652. 寻找重复的子树 题目描述这是 LeetCode 上的 652. 寻找重复的子树 ,难度为 中等。 给定一棵二叉树 root,返回所有重复的子树。 对于同一类的重复子树,你只需要返回其中任意一棵的根结点即可。 如果两棵树具有相同的结构和相同的结点值,则它们是重复的。 示例 1:123输入:root = [1,2,3,4,null,2,4,null,null,4]输出:[[2,4],[4]]示例 2:123输入:ro 2022-09-05 哈希表 DFS 二叉树