LC 697. 数组的度 题目描述这是 LeetCode 上的 697. 数组的度 ,难度为 简单。 给定一个非空且只包含非负数的整数数组 nums,数组的度的定义是指数组里任一元素出现频数的最大值。 你的任务是在 nums 中找到与 nums 拥有相同大小的度的最短连续子数组,返回其长度。 示例 1:123456789输入:[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:1234567输入:A = [1,1,1,0,0,0,1,1,1,1,0], K = 2输出:6解释: [1,1,1,0,0,1,1,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:12345输入:A = [0,1,0], K 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 = [ 2021-02-16 贪心
LC 485. 最大连续 1 的个数 题目描述这是 LeetCode 上的 485. 最大连续 1 的个数 ,难度为 简单。 给定一个二进制数组, 计算其中最大连续 1 的个数。 示例:123输入:[1,1,0,1,1,1]输出:3解释:开头的两位和最后的三位都是连续 1 ,所以最大连续 1 的个数是 3. 提示: 输入的数组只包含 0 和 1 输入数组的长度是正整数,且不超过 $10^4$ 双指针使用 l 和 r 作为左右端 2021-02-15 双指针
LC 765. 情侣牵手 题目描述这是 LeetCode 上的 765. 情侣牵手 ,难度为 困难。 N 对情侣坐在连续排列的 2N 个座位上,想要牵到对方的手。 计算最少交换座位的次数,以便每对情侣可以并肩坐在一起。 一次交换可选择任意两人,让他们站起来交换座位。 人和座位用 0 到 2N-1 的整数表示,情侣们按顺序编号,第一对是 $(0, 1)$,第二对是 $(2, 3)$,以此类推,最后一对是 $(2N-2, 2 2021-02-14 贪心 并查集
LC 448. 找到所有数组中消失的数字 题目描述这是 LeetCode 上的 448. 找到所有数组中消失的数字 ,难度为 简单。 给你一个含 n 个整数的数组 nums ,其中 nums[i] 在区间 [1, n] 内。 请你找出所有在 [1, n] 范围内但没有出现在 nums 中的数字,并以数组的形式返回结果。 示例 1: 123输入:nums = [4,3,2,7,8,2,3,1]输出:[5,6] 示例 2:123输入:nums 2021-02-13 排序 原地哈希
LC 119. 杨辉三角 II 题目描述这是 LeetCode 上的 119. 杨辉三角 II ,难度为 简单。 给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行。 在杨辉三角中,每个数是它左上方和右上方的数的和。 示例:123输入: 3输出: [1,3,3,1]进阶: 你可以优化你的算法到 $O(k)$ 空间复杂度吗? 动态规划动态规划裸题。 定义 $f[i][j]$ 为杨辉三角中第 $i$ 行第 $ 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:12345输入: s1 = "ab" s2 = "eidbaooo"输出: True解释: s2 包含 s1 的排列之一 (&quo 2021-02-10 滑动窗口
LC 992. K 个不同整数的子数组 题目描述这是 LeetCode 上的 992. K 个不同整数的子数组 ,难度为 困难。 给定一个正整数数组 $A$,如果 $A$ 的某个子数组中不同整数的个数恰好为 $K$,则称 $A$ 的这个连续、不一定不同的子数组为好子数组。 例如,$[1,2,3,1,2]$ 中有 $3$ 个不同的整数:$1$,$2$,以及 $3$。 返回 $A$ 中好子数组的数目。 示例 1:12345输入:A = [1 2021-02-09 双指针 滑动窗口
LC 978. 最长湍流子数组 题目描述这是 LeetCode 上的 978. 最长湍流子数组 ,难度为 中等。 当 A 的子数组 $A[i], A[i+1], …, A[j]$ 满足下列条件时,我们称其为湍流子数组: 若 $i <= k < j$,当 $k$ 为奇数时,$A[k] > A[k+1]$,且当 $k$ 为偶数时,$A[k] < A[k+1]$; 若 $i <= k < j$,当 2021-02-08 序列 DP 线性 DP
LC 1749. 任意子数组和的绝对值的最大值 题目描述这是 LeetCode 上的 1749. 任意子数组和的绝对值的最大值 ,难度为 中等。 给你一个整数数组 nums。 一个子数组 [numsl, numsl+1, ..., numsr-1, numsr] 的「和的绝对值」为 abs(numsl + numsl+1 + ... + numsr-1 + numsr)。 请你找出 nums 中和的绝对值最大的任意子数组(可能为空),并返回该最 2021-02-07 前缀和
LC 1751. 最多可以参加的会议数目 II 题目描述这是 LeetCode 上的 1751. 最多可以参加的会议数目 II ,难度为 困难。 给你一个 events 数组,其中 $events[i] = [startDay_i, endDay_i, value_i]$ ,表示第 $i$ 个会议在 $startDay_i$ 天开始,第 $endDay_i$ 天结束,如果你参加这个会议,你能得到价值 $value_i$ 。 同时给你一个整数 $ 2021-02-07 序列 DP 二分