334二进制尾零子数组问题 题目描述要求在一个由正整数组成的数组中找到一个最短的连续子数组,使得该子数组中所有元素的乘积在二进制表示中至少有 k 个连续的 0,即乘积是 2^k 的倍数。如果不存在这样的子数组,则返回 -1。 解题思路 因子 2 的计数: 乘积为 2^k 的倍数,等价于乘积中包含至少 k 个因子 2。 滑动窗口: 使用双指针l和r来维护一个滑动窗口。l表示窗口的左端,r表示窗口的右端。 遍历数组,逐步 2025-01-21 #稀土掘金 #双指针 #滑动窗口
328不大于n的好数计数问题 问题描述小 C 定义一个正整数为“好数”,当且仅当这个数的相邻数位都不相同。比如,1024 和 121 是好数,但 233 不是。现在小 C 想知道,不大于给定整数 n 的好数有多少个。结果对 $10^9 + 7$ 取模。 解题思路 转换为字符串:首先将整数 n 转换为字符串 s,以便逐位处理。 定义状态: i:当前处理到第 i 位。 pre:前一位的数字,用于判断当前位是否与前一位不同。 i 2025-01-21 #动态规划 #稀土掘金 #数位DP
315K排序算法最小操作次数计算 题目解析给定一个长度为 n 的排列,使用 K 排序算法可以通过以下步骤将其从小到大排序:每次从数列中选择最多 K 个位置的数,将它们移除后,将剩余的数左对齐。接着对移除的数进行排序,并将它们放在数列的末尾。需要计算最少需要多少次这样的操作,才能使数列按升序排列。 需要计算最少需要多少次这样的操作,才能使数列按升序排列。 解题思路 确定从头开始的最长连续递增子序列: 遍历数组,找到数列中按顺序排列 2025-01-21 #贪心 #稀土掘金
$$A = \begin{bmatrix} a_{11} & a_{12} & … & a_{1n}\ a_{21} & a_{22} & … & a_{2n}\ a_{31} & a_{22} & … & a_{3n}\ 2025-01-01
309魔幻世界中的安全区计算 题解问题分析在一个大小为 n x m 的二维数组中,每个格子的值表示该位置的危险程度。小 F 的能力值为 X,当某个格子的危险程度小于等于 X 时,该格子被认为是安全的。相邻(上下左右连通)的安全格子组成一个安全区。需要计算整个二维数组中有多少个安全区。 解题思路这题本质就是计算连通块的数量。使用广度优先搜索(BFS)遍历二维数组,标记已访问的安全格子。对于每一个未访问且安全的格子,启动一次 BF 2025-01-01 #BFS
370子区间平均值问题 题解问题描述 给定一个长度为 n 的整数数组 arr,以及一个有理数 u/v。需要找出数组中有多少个连续的子区间,其平均值恰好等于 u/v。 解题思路 转化问题:要求子区间的平均值等于 u/v,即子区间的总和等于 (u/v) * 长度。为了简化计算,我们可以将数组的每个元素都减去 u/v,然后问题转化为找出有多少个子区间的和为 0。 前缀和与哈希表: 使用前缀和 s 来记录从起始到当前元素的 2025-01-01 #前缀和
299红色格子染色方案数计算 问题描述小 R 有一排长度为 n 的格子,每个格子从左到右编号为 1 到 n。起初,部分格子已经被染成了红色,其他格子则没有颜色。红色格子的状态由一个长度为 n 的字符串 s 描述,其中 s[i] = 1 表示第 i 个格子是红色的,而 s[i] = 0 表示该格子没有颜色。 小 R 希望通过以下两种操作将所有格子都染成红色: 如果第 i 个格子是红色的,且 i + 1 ≤ 2025-01-01 #组合数学
326不同子序列计数问题 题解问题描述小 U 有一个字符串 s,他想计算该字符串的所有不同非空子序列的个数。子序列是通过删除原字符串中的部分字符(也可以不删除),且保持剩余字符的相对顺序形成的新字符串。 你的任务是帮助小 U 计算 s 的不同非空子序列的总数,并返回对 $10^9 + 7$ 取余的结果。 例如: 当 s = "abc" 时,所有不同的非空子序列包括 "a", &qu 2024-12-31 #动态规划
320'icci'型字符串子序列问题 题目描述小 U 定义了一种特殊的字符串类型,称为 “icci” 型字符串。要满足这个类型,字符串必须具备以下条件: 它的长度为 4。 第一个和第四个字符必须是元音字母(’a’, ‘e’, ‘i’, ‘o’, ‘u’)。 第二个和第三个字符必须是辅音字母(除了元音以外的字母)。 该字符串是一个回文串。 例如,字符串 “awwa” 和 “uttu” 都是 “icci” 型字符串。现在给定一个字符串 2024-12-31 #计数