LC 1766. 互质树 题目描述这是 LeetCode 上的 1766. 互质树 ,难度为 困难。 给你一个 n 个节点的树(也就是一个无环连通无向图),节点编号从 0 到 n - 1 ,且恰好有 n - 1 条边,每个节点有一个值。树的 根节点 为 0 号点。 给你一个整数数组 nums 和一个二维数组 edges 来表示这棵树。nums[i] 表示第 i 个点的值,edges[j] = [uj, vj] 表示节点 u 2021-02-21 DFS
LC 1763. 最长的美好子字符串 题目描述这是 LeetCode 上的 1763. 最长的美好子字符串 ,难度为 简单。 当一个字符串 s 包含的每一种字母的大写和小写形式 同时 出现在 s 中,就称这个字符串 s 是 美好 字符串。 比方说,"abABB" 是美好字符串,因为 'A' 和 'a' 同时出现了,且 'B' 和 'b' 也同时出现了。 2021-02-21 模拟 前缀和 位运算
LC 1764. 通过连接另一个数组的子数组得到一个数组 题目描述这是 LeetCode 上的 1764. 通过连接另一个数组的子数组得到一个数组 ,难度为 中等。 给你一个长度为 n 的二维整数数组 groups ,同时给你一个整数数组 nums 。 你是否可以从 nums 中选出 n 个 不相交 的子数组,使得第 i 个子数组与 groups[i] (下标从 0 开始)完全相同,且如果 i > 0 ,那么第 (i-1) 个子数组在 nums 中 2021-02-21 双指针
LC 1438. 绝对差不超过限制的最长连续子数组 题目描述这是 LeetCode 上的 1438. 绝对差不超过限制的最长连续子数组 ,难度为 中等。 给你一个整数数组 nums ,和一个表示限制的整数 limit,请你返回最长连续子数组的长度,该子数组中的任意两个元素之间的绝对差必须小于或者等于 limit 。 如果不存在满足条件的子数组,则返回 0 。 示例 1:1234567891011121314输入:nums = [8,2,4,7], 2021-02-21 二分 滑动窗口 单调队列
LC 697. 数组的度 题目描述这是 LeetCode 上的 697. 数组的度 ,难度为 简单。 给定一个非空且只包含非负数的整数数组 nums,数组的度的定义是指数组里任一元素出现频数的最大值。 你的任务是在 nums 中找到与 nums 拥有相同大小的度的最短连续子数组,返回其长度。 示例 1:1234567输入:[1, 2, 2, 3, 1]输出:2解释:输入数组的度是2,因为元素1和2的出现频数最大,均为2.连 2021-02-20 哈希表
LC 1004. 最大连续1的个数 III 题目描述这是 LeetCode 上的 1004. 最大连续1的个数 III ,难度为 中等。 给定一个由若干 $0$ 和 $1$ 组成的数组 A,我们最多可以将 $K$ 个值从 $0$ 变成 $1$ 。 返回仅包含 $1$ 的最长(连续)子数组的长度。 示例 1:12345输入:A = [1,1,1,0,0,0,1,1,1,1,0], K = 2输出:6解释: [1,1,1,0,0,1,1,1,1 2021-02-19 二分 双指针 滑动窗口 前缀和
LC 995. K 连续位的最小翻转次数 题目描述这是 LeetCode 上的 995. K 连续位的最小翻转次数 ,难度为 困难。 在仅包含 0 和 1 的数组 A 中,一次 K 位翻转包括选择一个长度为 K 的(连续)子数组,同时将子数组中的每个 0 更改为 1,而每个 1 更改为 0。 返回所需的 K 位翻转的最小次数,以便数组没有值为 0 的元素。如果不可能,返回 -1。 示例 1:123输入:A = [0,1,0], K = 1 2021-02-18 贪心 差分
LC 566. 重塑矩阵 题目描述这是 LeetCode 上的 566. 重塑矩阵 ,难度为 简单。 在 MATLAB 中,有一个非常有用的函数 reshape,它可以将一个矩阵重塑为另一个大小不同的新矩阵,但保留其原始数据。 给出一个由二维数组表示的矩阵,以及两个正整数 r 和 c,分别表示想要的重构的矩阵的行数和列数。 重构后的矩阵需要将原始矩阵的所有元素以相同的行遍历顺序填充。 如果具有给定参数的 reshape 操 2021-02-17 模拟
LC 561. 数组拆分 I 题目描述这是 LeetCode 上的 561. 数组拆分 I ,难度为 简单。 给定长度为 $2 \times n$ 的整数数组 nums,你的任务是将这些数分成 n 对, 例如 $(a_1, b_1), (a_2, b_2), …, (a_n, b_n)$ ,使得从 1 到 n 的 $min(a_i, b_i)$ 总和最大。 返回该 最大总和 。 示例 1:1234567输入:nums = [1 2021-02-16 贪心
LC 485. 最大连续 1 的个数 题目描述这是 LeetCode 上的 485. 最大连续 1 的个数 ,难度为 简单。 给定一个二进制数组, 计算其中最大连续 1 的个数。 示例:123输入:[1,1,0,1,1,1]输出:3解释:开头的两位和最后的三位都是连续 1 ,所以最大连续 1 的个数是 3. 提示: 输入的数组只包含 0 和 1 。 输入数组的长度是正整数,且不超过 10,000。 双指针解法 使用 i 和 j 2021-02-15 双指针
LC 765. 情侣牵手 题目描述这是 LeetCode 上的 765. 情侣牵手 ,难度为 困难。 N 对情侣坐在连续排列的 2N 个座位上,想要牵到对方的手。 计算最少交换座位的次数,以便每对情侣可以并肩坐在一起。 一次交换可选择任意两人,让他们站起来交换座位。 人和座位用 0 到 2N-1 的整数表示,情侣们按顺序编号,第一对是 (0, 1),第二对是 (2, 3),以此类推,最后一对是 (2N-2, 2N-1)。 2021-02-14 贪心 并查集
LC 448. 找到所有数组中消失的数字 题目描述这是 LeetCode 上的 448. 找到所有数组中消失的数字 ,难度为 简单。 给定一个范围在 $1 ≤ a[i] ≤ n$ ( $n$ = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次。 找到所有在 $[1, n]$ 范围之间没有出现在数组中的数字。 您能在不使用额外空间且时间复杂度为 $O(n)$ 的情况下完成这个任务吗? 你可以假定返回的数组不算在额 2021-02-13 排序 原地哈希
LC 119. 杨辉三角 II 题目描述这是 LeetCode 上的 119. 杨辉三角 II ,难度为 简单。 给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行。 在杨辉三角中,每个数是它左上方和右上方的数的和。 示例:12输入: 3输出: [1,3,3,1]进阶: 你可以优化你的算法到 O(k) 空间复杂度吗? 动态规划12345678910111213141516class Solution  2021-02-12 数学 线性 DP
LC 703. 数据流中的第 K 大元素 题目描述这是 LeetCode 上的 703. 数据流中的第 K 大元素 ,难度为 简单。 设计一个找到数据流中第 k 大元素的类(class)。注意是排序后的第 k 大元素,不是第 k 个不同的元素。 请实现 KthLargest 类: KthLargest(int k, int[] nums) 使用整数 k 和整数流 nums 初始化对象。 int add(int val) 将 val 插入 2021-02-11 优先队列(堆) 排序 Top K
LC 567. 字符串的排列 题目描述这是 LeetCode 上的 567. 字符串的排列 ,难度为 中等。 给定两个字符串 s1 和 s2,写一个函数来判断 s2 是否包含 s1 的排列。 换句话说,第一个字符串的排列之一是第二个字符串的 子串 。 示例 1:123输入: s1 = "ab" s2 = "eidbaooo"输出: True解释: s2 包含 s1 的排列之一 (&quo 2021-02-09 滑动窗口