LC 354. 俄罗斯套娃信封问题 题目描述这是 LeetCode 上的 354. 俄罗斯套娃信封问题 ,难度为 困难。 给你一个二维整数数组 envelopes,其中 $envelopes[i] = [w{i}, h{i}]$,表示第 i 个信封的宽度和高度。 当另一个信封的宽度和高度都比这个信封大的时候,这个信封就可以放进另一个信封里,如同俄罗斯套娃一样。 请计算「最多能有多少个」信封能组成一组“俄罗斯套娃”信封(即可以把一个信 2021-03-04 序列 DP 二分
LC 307. 区域和检索 - 数组可修改 题目描述这是 LeetCode 上的 307. 区域和检索 - 数组可修改 ,难度为 中等。 给你一个数组 nums,请你完成两类查询,其中一类查询要求更新数组下标对应的值,另一类查询要求返回数组中某个范围内元素的总和。 实现 NumArray 类: NumArray(int[] nums) 用整数数组 nums 初始化对象 void update(int index, int val) 将 n 2021-03-03 线段树 树状数组 区间和
LC 338. 比特位计数 题目描述这是 LeetCode 上的 338. 比特位计数 ,难度为 简单。 给定一个非负整数 num。 对于 0 ≤ i ≤ num 范围中的每个数字 i,计算其二进制数中的 $1$ 的数目并将它们作为数组返回。 示例 1:123输入: 2输出: [0,1,1]示例 2:123输入: 5输出: [0,1,1,2,1,2]进阶: 给出时间复杂度为 $O(n \times sizeof(integ 2021-03-03 数学 线性 DP 位运算
LC 304. 二维区域和检索 - 矩阵不可变 题目描述这是 LeetCode 上的 304. 二维区域和检索 - 矩阵不可变 ,难度为 中等。 给定一个二维矩阵,计算其子矩形范围内元素的总和,该子矩阵的左上角为 (row1, col1) ,右下角为 (row2, col2) 。 上图子矩阵左上角 (row1, col1) = (2, 1) ,右下角(row2, col2) = (4, 3),该子矩形内元素的总和为 8。 示例:1234567 2021-03-02 前缀和 区间求和问题
LC 303. 区域和检索 - 数组不可变 题目描述这是 LeetCode 上的 303. 区域和检索 - 数组不可变 ,难度为 简单。 给定一个整数数组 nums,求出数组从索引 i 到 j(i ≤ j)范围内元素的总和,包含 i、j 两点。 实现 NumArray 类: NumArray(int[] nums) 使用数组 nums 初始化对象 int sumRange(int i, int j) 返回数组 nums 从索引 i 到 j 2021-03-01 前缀和 区间求和问题
LC 896. 单调数列 题目描述这是 LeetCode 上的 896. 单调数列 ,难度为 简单。 如果数组是单调递增或单调递减的,那么它是单调的。 如果对于所有 i <= j,A[i] <= A[j],那么数组 A 是单调递增的。 如果对于所有 i <= j,A[i]> = A[j],那么数组 A 是单调递减的。 当给定的数组 A 是单调数组时返回 true,否则返回 false。 示例 1:1 2021-02-28 模拟 数组
LC 395. 至少有 K 个重复字符的最长子串 题目描述这是 LeetCode 上的 395. 至少有 K 个重复字符的最长子串 ,难度为 中等。 给你一个字符串 s 和一个整数 k,请你找出 s 中的最长子串,要求该子串中的每一字符出现次数都不少于 k,返回这一子串的长度。 示例 1:12345输入:s = "aaabb", k = 3输出:3解释:最长子串为 "aaa" ,其中 'a 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] = 0。 当书店老板 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]]输出:tr 2021-02-22 模拟
LC 1766. 互质树 题目描述这是 LeetCode 上的 1766. 互质树 ,难度为 困难。 给你一个 n 个节点的树(也就是一个无环连通无向图),节点编号从 0 到 n - 1,且恰好有 n - 1 条边,每个节点有一个值,树的根节点为 0 号点。 给你一个整数数组 nums 和一个二维数组 edges 来表示这棵树。 nums[i] 表示第 i 个点的值,$edges[j] = [u{j}, v{j}]$ 表示 2021-02-21 DFS
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:12345678910111213141516输入:nums = [8,2,4,7], 2021-02-21 滑动窗口 二分 单调队列