- 博客(103)
- 收藏
- 关注
原创 小红的区间删除使用哈希表算法
小红拿到了一个数组,她准备进行最多一次以下操作:选择两个相等的元素,将这两个元素之间的所有元素删除。例子说明:选择第二个数和第五个数(都是1),小红可以删除第三个数和第四个数。空间限制:C/C++ 256M,其他语言512M。第二行输入n个正整数ai,代表数组的元素。时间限制:C/C++ 1秒,其他语言2秒。第一行输入一个正整数n,代表数组的大小。小红想知道,她最多可以删除多少个元素?一个整数,代表可以删除的最多数量。1<=ai<=10的9次方。
2025-08-06 20:56:53
200
原创 统计满足K约束的子字符串数量I使用滑动窗口
s 的所有子字符串中,除了 "1010"、"10101" 和 "0101" 外,其余子字符串都满足 k 约束。s 的所有子字符串中,除了长度大于 5 的子字符串外,其余子字符串都满足 k 约束。返回一个整数,表示 s 的所有满足 k 约束 的子字符串的数量。输入:s = "1010101", k = 2。s 的所有子字符串都满足 k 约束。输入:s = "10101", k = 1。输入:s = "11111", k = 1。给你一个 二进制 字符串 s 和一个整数 k。字符串中 1 的数量最多为 k。
2025-08-06 12:28:00
176
原创 小美的区间删除使用滑动窗口和数学算法
小美拿到了一个大小为n的数组,她希望删除一个区间后,使得剩余所有元素的乘积末尾至少有k个 0。小美想知道,一共有多少种不同的删除方案?空间限制:C/C++ 256M,其他语言512M。第二行输入n个正整数ai,代表小美拿到的数组。第三个方案,删除[3,4]。时间限制:C/C++ 1秒,其他语言2秒。第一个方案,删除[3]。第二个方案,删除[4]。第四个方案,删除[2]。第一行输入两个正整数n,k。1<=n,k<=10的5次方。一个整数,代表删除的方案数。1<=ai<=10的9次方。
2025-08-06 11:52:57
202
原创 阶乘后的零使用数学算法
25的倍数(如25,50,...)额外再提供一个5(因为25=5×5,有两个5,其中一个已经在5的倍数中计算过一次,所以这里额外再提供一个)。在阶乘中,因子2的数量通常多于因子5的数量,因此尾随零的数量实际上取决于因子5的数量。所以,因子5的总个数为:count = n/5 + n/25 + n/125 + ...首先,所有5的倍数(如5,10,15,...)至少提供一个5。同理,125的倍数再额外提供一个5,以此类推。
2025-08-06 10:04:19
218
原创 乘积小于K的子数组使用滑动窗口算法
解释:8 个乘积小于 100 的子数组分别为:[10]、[5]、[2]、[6]、[10,5]、[5,2]、[2,6]、[5,2,6]。需要注意的是 [10,5,2] 并不是乘积小于 100 的子数组。给你一个整数数组 nums 和一个整数 k ,请你返回子数组内所有元素的乘积严格小于 k 的连续子数组的数目。输入:nums = [10,5,2,6], k = 100。输入:nums = [1,2,3], k = 0。1 <= nums.length <= 3 * 10的4次方。
2025-08-06 09:50:22
145
原创 长度最小的子数组使用滑动窗口算法
找出该数组中满足其总和大于等于 target 的长度最小的子数组,并返回其长度。输入:target = 11, nums = [1,1,1,1,1,1,1,1]输入:target = 7, nums = [2,3,1,2,4,3]输入:target = 4, nums = [1,4,4]解释:子数组 [4,3] 是该条件下的长度最小的子数组。1 <= nums.length <= 10的5次方。1 <= nums[i] <= 10的4次方。1 <= target <= 10的9次方。
2025-08-06 09:22:42
140
原创 小美的MT
修改第三个和第五个字符,形成的字符串为 MTTAM,这样共有 4 个'M'和'T'。剩下的字符(非'M'和'T')有n - count个,我们可以通过操作将这些字符改为'M'或'T'。最终结果:最终字符串中'M'和'T'的总数为count + min(k, n - count)。目标是最大化最终字符串中'M'和'T'的总数量。遍历字符串,统计已经存在的'M'和'T'字符的数量(count)。字符串中已经存在一定数量的'M'和'T'(记为count)。输出操作结束后最多共有多少个'M'和'T'字符。
2025-08-05 19:06:41
225
原创 小美的数组询问使用前缀和算法
数组中有一些元素是未知的(表示为0),这些未知元素可以在给定的区间[l, r]内任意取值。现在小美想知道,如果那些未知的元素在区间[𝑙,𝑟]范围内随机取值的话,数组所有元素之和的最小值和最大值分别是多少?第一次询问,数组最小的和是 1+1+3=5,最大的和是 1+2+3=6。首先,我们需要统计已知元素的总和(sum)和未知元素的个数(count)。输出q行,每行输出两个正整数,代表所有元素之和的最小值和最大值。接下来的q行,每行输入两个正整数l,r ,代表一次询问。第二次询问,显然数组的元素和必然为 8
2025-08-05 18:34:33
197
原创 小美的平衡矩阵使用前缀和算法
定义二维数组dp,其中dp[i][j]表示从(1,1)到(i,j)的矩形中1的个数。递推公式为:dp[i][j] = dp[i-1][j] + dp[i][j-1] - dp[i-1][j-1] + (matrix[i][j]=='1'?如果i是偶数,则遍历所有可能的左上角位置x(1到n-i+1)和y(1到n-i+1),计算子矩阵中1的个数,并判断是否等于i*i/2,计数。对于每个可能的边长i(从1到n),遍历所有可能的左上角位置(x,y),计算以(x,y)为左上角、边长为i的子矩阵中1的个数。
2025-08-05 17:02:50
210
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人