LC 395. 至少有 K 个重复字符的最长子串 题目描述这是 LeetCode 上的 395. 至少有 K 个重复字符的最长子串 ,难度为 中等。 给你一个字符串 s 和一个整数 k ,请你找出 s 中的最长子串, 要求该子串中的每一字符出现次数都不少于 k 。返回这一子串的长度。 示例 1:123输入:s = "aaabb", k = 3输出:3解释:最长子串为 "aaa" ,其中 'a&#x 2021-02-27 双指针 枚举
LC 1178. 猜字谜 题目描述这是 LeetCode 上的 1178. 猜字谜 ,难度为 困难。 外国友人仿照中国字谜设计了一个英文版猜字谜小游戏,请你来猜猜看吧。 字谜的迷面 puzzle 按字符串形式给出,如果一个单词 word 符合下面两个条件,那么它就可以算作谜底: 单词 word 中包含谜面 puzzle 的第一个字母。 单词 word 中的每一个字母都可以在谜面 puzzle 中找到。例如,如果字谜的谜面 2021-02-26 哈希表 状态压缩 位运算
LC 867. 转置矩阵 题目描述这是 LeetCode 上的 867. 转置矩阵 ,难度为 简单。 给你一个二维整数数组 matrix, 返回 matrix 的 转置矩阵 。 矩阵的 转置 是指将矩阵的主对角线翻转,交换矩阵的行索引与列索引。 示例 1:12输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[[1,4,7],[2,5,8],[3,6,9]]示例 2:12输入:matrix 2021-02-25 模拟
LC 832. 翻转图像 题目描述这是 LeetCode 上的 832. 翻转图像 ,难度为 简单。 给定一个二进制矩阵 A,我们想先水平翻转图像,然后反转图像并返回结果。 水平翻转图片就是将图片的每一行都进行翻转,即逆序。例如,水平翻转 [1, 1, 0] 的结果是 [0, 1, 1]。 反转图片的意思是图片中的 0 全部被 1 替换, 1 全部被 0 替换。例如,反转 [0, 1, 1] 的结果是 [1, 0, 0]。 2021-02-24 双指针
LC 1052. 爱生气的书店老板 题目描述这是 LeetCode 上的 1052. 爱生气的书店老板 ,难度为 中等。 今天,书店老板有一家店打算试营业 $customers.length$ 分钟。每分钟都有一些顾客($customers[i]$)会进入书店,所有这些顾客都会在那一分钟结束后离开。 在某些时候,书店老板会生气。 如果书店老板在第 $i$ 分钟生气,那么 $grumpy[i] = 1$,否则 $grumpy[i] = 2021-02-23 双指针 滑动窗口
LC 766. 托普利茨矩阵 题目描述这是 LeetCode 上的 766. 托普利茨矩阵 ,难度为 简单。 给你一个 m x n 的矩阵 matrix 。如果这个矩阵是托普利茨矩阵,返回 true ;否则,返回 false 。 如果矩阵上每一条由左上到右下的对角线上的元素都相同,那么这个矩阵是 托普利茨矩阵 。 示例 1:123456输入:matrix = [[1,2,3,4],[5,1,2,3],[9,5,1,2]]输出: 2021-02-22 模拟
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 贪心