LC 895. 最大频率栈 题目描述这是 LeetCode 上的 895. 最大频率栈 ,难度为 困难。 设计一个类似堆栈的数据结构,将元素推入堆栈,并从堆栈中弹出出现频率最高的元素。 实现 FreqStack 类: FreqStack() 构造一个空的堆栈。 void push(int val) 将一个整数 val 压入栈顶。 int pop() 删除并返回堆栈中出现频率最高的元素。 如果出现频率最高的元素不只一个,则 2022-11-30 模拟 哈希表
LC 1758. 生成交替二进制字符串的最少操作数 题目描述这是 LeetCode 上的 1758. 生成交替二进制字符串的最少操作数 ,难度为 简单。 给你一个仅由字符 '0' 和 '1' 组成的字符串 s 。一步操作中,你可以将任一 '0' 变成 '1' ,或者将 '1' 变成 '0' 。 交替字符串 定义为:如果字符串中不存在相邻两个字符相等的情况 2022-11-29 模拟
LC 813. 最大平均值和的分组 题目描述这是 LeetCode 上的 813. 最大平均值和的分组 ,难度为 中等。 给定数组 nums 和一个整数 k 。我们将给定的数组 nums 分成 最多 k 个相邻的非空子数组 。 分数 由每个子数组内的平均值的总和构成。 注意我们必须使用 nums 数组中的每一个数进行分组,并且分数不一定需要是整数。 返回我们所能得到的最大 分数 是多少。答案误差在 $10^{-6}$ 内被视为是正确 2022-11-28 动态规划 前缀和 数学 序列 DP
LC 882. 细分图中的可到达节点 题目描述这是 LeetCode 上的 882. 细分图中的可到达节点 ,难度为 困难。 给你一个无向图(原始图),图中有 n 个节点,编号从 0 到 n - 1 。你决定将图中的每条边 细分 为一条节点链,每条边之间的新节点数各不相同。 图用由边组成的二维数组 edges 表示,其中 $edges[i] = [u{i}, v{i}, cnt{i}]$ 表示原始图中节点 $u{i}$ 和 $v{i} 2022-11-26 最短路 单源最短路 Dijkstra SPFA
LC 809. 情感丰富的文字 题目描述这是 LeetCode 上的 809. 情感丰富的文字 ,难度为 中等。 有时候人们会用重复写一些字母来表示额外的感受,比如 "hello" -> "heeellooo", "hi" -> "hiii"。我们将相邻字母都相同的一串字符定义为相同字母组,例如:"h", " 2022-11-25 模拟 双指针
LC 795. 区间子数组个数 题目描述这是 LeetCode 上的 795. 区间子数组个数 ,难度为 中等。 给你一个整数数组 nums 和两个整数:left 及 right 。 找出 nums 中连续、非空且其中最大元素在范围 $[left, right]$ 内的子数组,并返回满足条件的子数组的个数。 生成的测试用例保证结果符合 32-bit 整数范围。 示例 1:12345输入:nums = [2,1,4,3], lef 2022-11-24 模拟 单调栈
LC 1742. 盒子中小球的最大数量 题目描述这是 LeetCode 上的 1742. 盒子中小球的最大数量 ,难度为 简单。 你在一家生产小球的玩具厂工作,有 n 个小球,编号从 lowLimit 开始,到 highLimit 结束(包括 lowLimit 和 highLimit ,即 n == highLimit - lowLimit + 1)。另有无限数量的盒子,编号从 1 到 infinity 。 你的工作是将每个小球放入盒子 2022-11-23 模拟 哈希表
LC 878. 第 N 个神奇数字 题目描述这是 LeetCode 上的 878. 第 N 个神奇数字 ,难度为 困难。 一个正整数如果能被 a 或 b 整除,那么它是神奇的。 给定三个整数 n , a , b ,返回第 n 个神奇的数字。因为答案可能很大,所以返回答案 对 $10^9 + 7$ 取模 后的值。 示例 1:123输入:n = 1, a = 2, b = 3输出:2示例 2:123输入:n = 4, a = 2, b 2022-11-22 二分 数学 容斥原理 gcd lcm
LC 808. 分汤 题目描述这是 LeetCode 上的 808. 分汤 ,难度为 中等。 有 A 和 B 两种类型 的汤。一开始每种类型的汤有 n 毫升。有四种分配操作: 提供 100ml 的 汤A 和 0ml 的 汤B 。 提供 75ml 的 汤A 和 25ml 的 汤B 。 提供 50ml 的 汤A 和 50ml 的 汤B 。 提供 25ml 的 汤A 和 75ml 的 汤B 。 当我们把汤分配给某人之后, 2022-11-21 动态规划 数学 线性 DP
LC 799. 香槟塔 题目描述这是 LeetCode 上的 799. 香槟塔 ,难度为 中等。 我们把玻璃杯摆成金字塔的形状,其中 第一层 有 1 个玻璃杯, 第二层 有 2 个,依次类推到第 100 层,每个玻璃杯 (250ml) 将盛有香槟。 从顶层的第一个玻璃杯开始倾倒一些香槟,当顶层的杯子满了,任何溢出的香槟都会立刻等流量的流向左右两侧的玻璃杯。当左右两边的杯子也满了,就会等流量的流向它们左右两边的杯子,依次类 2022-11-20 动态规划 线性 DP
LC 1732. 找到最高海拔 题目描述这是 LeetCode 上的 1732. 找到最高海拔 ,难度为 简单。 有一个自行车手打算进行一场公路骑行,这条路线总共由 $n + 1$ 个不同海拔的点组成。自行车手从海拔为 0 的点 0 开始骑行。 给你一个长度为 n 的整数数组 gain,其中 gain[i] 是点 i 和点 i + 1 的 净海拔高度差($0 <= i < n$)。请你返回 最高点的海拔 。 示例 1 2022-11-19 模拟
LC 891. 子序列宽度之和 题目描述这是 LeetCode 上的 891. 子序列宽度之和 ,难度为 困难。 一个序列的 宽度 定义为该序列中最大元素和最小元素的差值。 给你一个整数数组 nums,返回 nums 的所有非空 子序列 的 宽度之和 。由于答案可能非常大,请返回对 $10^9 + 7$ 取余 后的结果。 子序列 定义为从一个数组里删除一些(或者不删除)元素,但不改变剩下元素的顺序得到的数组。例如,[3,6,2, 2022-11-18 数学
LC 792. 匹配子序列的单词数 题目描述这是 LeetCode 上的 792. 匹配子序列的单词数 ,难度为 中等。 给定字符串 s 和字符串数组 words, 返回 words[i] 中是 s 的子序列的单词个数 。 字符串的 子序列 是从原始字符串中生成的新字符串,可以从中删去一些字符(可以是""),而不改变其余字符的相对顺序。 例如, “ace” 是 “abcde” 的子序列。 示例 1:12345输 2022-11-17 哈希表 二分
LC 775. 全局倒置与局部倒置 题目描述这是 LeetCode 上的 775. 全局倒置与局部倒置 ,难度为 中等。 给你一个长度为 n 的整数数组 nums,表示由范围 $[0, n - 1]$ 内所有整数组成的一个排列。 全局倒置 的数目等于满足下述条件不同下标对 (i, j) 的数目: $0 <= i < j < n$ $nums[i] > nums[j]$ 局部倒置 的数目等于满足下述条件的下 2022-11-16 数学 树状数组
LC 1710. 卡车上的最大单元数 题目描述这是 LeetCode 上的 1710. 卡车上的最大单元数 ,难度为 简单。 请你将一些箱子装在 一辆卡车 上。给你一个二维数组 boxTypes,其中 $boxTypes[i] = [numberOfBoxes_i, numberOfUnitsPerBox_i]$ : $numberOfBoxes_i$ 是类型 i 的箱子的数量。 $numberOfUnitsPerBox_i$ 是类 2022-11-15 模拟 贪心 排序