2026-03-11:最长平衡子数组Ⅰ。用go语言,给定一个整数数组 nums。...把数组中任意一段连续且非空的元素称为子数组;如果把子数组里的元素去重后,偶数的个数与奇数的个数相等,就把该子数组称为“平衡子数组”。请找出数组中最长的平衡子数组,并返回它的长度。...步骤2:外层循环确定子数组起始位置 外层 for 循环(i 从0到len(nums)-1)遍历数组的每一个位置,作为子数组的起始下标: • 当 i=0 时,子数组起始于第0个元素(值为2); • 当 i...初始化统计容器:每次外层循环(换起始位置)时,都会新建两个空字典: • odd:键为子数组中的奇数,值为该奇数出现的次数(仅记录“存在性”,次数无实际意义); • even:键为子数组中的偶数,值为该偶数出现的次数...判断是否平衡并更新最大值:每次更新字典后,检查 odd 和 even 的键的数量(即去重后的奇偶数量)是否相等: • 若相等:计算当前子数组长度 j-i+1,如果比 maxLen 大,则更新 maxLen
2024-11-20:交替子数组计数。用go语言,给定一个二进制数组 nums, 如果一个子数组中的相邻元素的值都不相同,我们称这个子数组为交替子数组。 请返回数组 nums 中交替子数组的总数。...2.交替子数组的定义:交替子数组是指一个子数组中,相邻的元素值必须不同。例如: 2.1.数组 [0] 和 [1] 都是交替子数组,因为它们的元素没有相邻重复的情况。...3.2.cur:用于记录当前交替子数组的长度,初始值为 0。 3.3.pre:一个辅助变量,用于保存前一个元素的值,初始设置为 -1(方便与第一个元素进行比较)。...4.遍历数组: 4.1.对于给定的数组 nums 中的每一个元素 a,执行以下操作: 4.1.1.非重复情况:如果当前元素 a 与前一个元素 pre 不相等,表示交替状态继续,故将当前计数 cur 加...4.1.3.更新 pre 为当前的元素 a,以便于下一次迭代进行比较。 4.1.4.将当前的 cur 值累加到总数 res 中。这将确保包含所有以当前元素为结束元素的交替子数组。
2024-08-31:用go语言,给定一个数组apple,包含n个元素,每个元素表示一个包裹中的苹果数量; 另一个数组capacity包含m个元素,表示m个不同箱子的容量。...有n个包裹,每个包裹内装有指定数量的苹果,以及m个箱子,每个箱子的容量不同。 任务是将这n个包裹中的所有苹果重新分配到箱子中,最小化所需的箱子数量。...需要注意的是,可以将同一个包裹中的苹果分装到不同的箱子中。 需要计算并返回实现这一目标所需的最小箱子数量。 输入:apple = [1,3,2], capacity = [4,3,1,5,2]。...3.遍历排序后的容量数组,从大到小依次尝试将苹果放入箱子中。...• 如果 s 大于 0,继续尝试将苹果放入下一个箱子,更新 s 为剩余苹果的数量。 5.如果循环结束时仍未返回箱子数量,说明无法将所有苹果重新分装到箱子中,返回 -1。
2021-04-17:给定一个整型数组 arr,数组中的每个值都为正数,表示完成一幅画作需要的时间,再 给定 一个整数 num,表示画匠的数量,每个画匠只能画连在一起的画作。...所有的画家 并行工作,请 返回完成所有的画作需要的最少时间。【举例】arr=3,1,4,num=2。最好的分配方式为第一个画匠画 3 和 1,所需时间为 4。第二个画匠画 4,所需时间 为 4。...如果分配方式为第一个画匠画 3,所需时 间为 3。第二个画 匠画 1 和 4,所需的时间为 5。那么最少时间为 5,显然没有第一 种分配方式好。所以返回 4。arr=1,1,1,4,3,num=3。...最好的分配方式为第一个画匠画前三个 1,所需时间为 3。第二个画匠画 4,所需时间 为 4。 第三个画匠画 3,所需时间为 3。返回 4。 福大大 答案2021-04-17: 二分法。...分割数组的最大值
2024-12-25:特殊数组Ⅱ。用go语言,一个数组被称为“特殊数组”,如果它的每一对相邻元素的奇偶性不同。...给定一个整数数组 nums 和一个二维整数矩阵 queries,我们需要判断对于每一个查询 queries[i] = [fromi, toi],对应的子数组 nums[fromi..toi] 是否为特殊数组...大体步骤如下: 1.首先通过函数isArraySpecial来判断数组中每一对相邻元素的奇偶性是否不同,以确定是否为特殊数组。...3.从第二个元素开始遍历数组nums,如果当前元素和前一个元素的异或结果的奇偶性不同,则更新dp[i]为dp[i-1]+1,表示连续特殊的子数组长度增加了。...5.将每个查询的结果存储在布尔数组res中,并返回该数组作为输出。 总的时间复杂度: • 对数组nums的遍历需要O(n)的时间复杂度,其中n为数组的长度。
printf("%d\t", result[i][j]); } printf("\n"); } return 1; } 最近发东西比较频繁,因为我的图床写好了
2024-11-28:边界元素是最大值的子数组数目。用go语言,给定一个正整数数组 nums,需要找到满足子数组中第一个和最后一个元素都是该子数组中的最大值的子数组数量。...解释: 总共有 6 个子数组满足第一个元素和最后一个元素都是子数组中的最大值: 子数组 [1,4,3,3,2] 的1,最大元素为 1 ,第一个和最后一个元素都是 1 。...子数组 [1,4,3,3,2] 的4,最大元素为 4 ,第一个和最后一个元素都是 4 。 子数组 [1,4,3,3,2]的第1个3 ,最大元素为 3 ,第一个和最后一个元素都是 3 。...4.遍历数组 nums 中的每个元素 x: • 如果 x 大于栈顶元素的 x,则持续弹出栈顶元素,直到栈为空或者 x 不大于栈顶元素的 x。...• 如果 x 等于栈顶元素的 x,将 ans 增加栈顶元素的 cnt,并且增加栈顶元素的 cnt 值。 • 如果 x 小于栈顶元素的 x,将一个新的 pair{x, 1} 压入栈中。
2026-03-26:统计主要元素子数组数目Ⅰ。用go语言,给定一个整数数组 nums 和一个整数 target。...你要统计数组中连续且非空的所有子数组中,满足如下条件的子数组数量:在该子数组里,target 这个数出现的次数严格大于子数组长度的一半。...一、核心前置理解 题目要求:统计所有连续非空子数组中,target 出现次数 严格大于 子数组长度一半的子数组数量。...定义两个关键变量: • s:当前前缀和的偏移值,初始为 4(对应前缀和0); • f:记录以当前元素结尾的符合条件的子数组数量,初始为0; 5. 结果变量 ans:最终总数量,初始为0。...额外空间复杂度 • 代码中创建了一个计数数组 cnt,长度为 2n+1,是唯一的额外空间; • 其他变量(s、f、ans、n)均为常数级空间,不随输入规模变化; • 因此总额外空间复杂度为 O(n)。
2026-03-04:最长斐波那契子数组。用go语言,给定一个只包含正整数的数组 nums。...把数组中任意一段连续元素看作一个片段;如果该片段从第 3 个元素起,每一项都等于前面两项之和,则称其为斐波那契型片段。长度为 1 或 2 的片段默认满足这个条件。...一、需求理解 你希望我基于给定的Go语言代码,详细拆解它解决“最长斐波那契子数组”问题的核心思路和执行过程,并分析该解法的时间复杂度与空间复杂度。...步骤2:遍历数组验证斐波那契规则(核心循环) 循环从 i = 2 开始(因为需要验证第3个元素是否满足“前两项之和”的规则),直到 i < n: i值 nums[i] nums[i-1]+nums[i-...额外空间复杂度 • 代码中仅使用了有限的几个变量(n、ans、start、i),没有创建额外的数组、哈希表等数据结构,所有变量占用的空间与输入数组长度无关。
2022-04-23:给定你一个整数数组 nums 我们要将 nums 数组中的每个元素移动到 A 集合 或者 B 集合中 使得 A 集合和 B 集合不为空,并且 average(A) == average...定义全局变量 n、s、l 和 r,分别表示数组长度、数组元素之和、左侧集合的元素个数和右侧集合的元素个数。 2....创建一个长度为 n/2 的切片 larr 和一个长度为 n-len(larr) 的切片 rarr,将前半部分元素存储在 larr 中,将后半部分元素存储在 rarr 中。 6....如果 index 等于数组长度,则计算指标值并将其存储在 lvalues 或 rvalues 中。 11....编写函数 contains(num int) bool,其中 num 是需要查找的元素。使用二分查找算法在 rvalues 数组中查找相应的元素。
2021-07-27:给定一个数组arr,长度为N,arr中的值只有1,2,3三种。...arri == 1,代表汉诺塔问题中,从上往下第i个圆盘目前在左;arri == 2,代表汉诺塔问题中,从上往下第i个圆盘目前在中;arri == 3,代表汉诺塔问题中,从上往下第i个圆盘目前在右。...那么arr整体就代表汉诺塔游戏过程中的一个状况。如果这个状况不是汉诺塔最优解运动过程中的状况,返回-1。如果这个状况是汉诺塔最优解运动过程中的状况,返回它是第几个状况。...福大大 答案2021-07-27: 1-7的汉诺塔问题。 1-6左→中。 7左→右。 1-6中→右。 单决策递归。 k层汉诺塔问题,是2的k次方-1步。 时间复杂度:O(N)。...to 另一个是啥?
用go语言,给定一个整数数组 nums 和一个整数 k,对于数组中的每个元素,你最多可以对其进行一次操作:将一个在区间 [-k, k] 内的整数加到该元素上。...请问经过这样的调整后,数组中能够出现的不同元素的最大数量是多少? 1 <= nums.length <= 100000。 1 <= nums[i] <= 1000000000。...解决思路 为了最大化不同元素的数量,我们需要合理地调整每个元素的值,使得调整后的值尽可能不重复。以下是详细的解决步骤: 1. 排序数组: • 首先将数组 nums 进行升序排序。...遍历排序后的数组: • 对于每个元素 x,我们需要找到一个调整后的值 x',使得 x' 满足以下条件: • x' 在 [x - k, x + k] 的范围内。...边界情况处理: • 如果 k 足够大(即 k * 2 + 1 >= n,其中 n 是数组长度),则可以直接将数组调整为 n 个连续的唯一值(例如 [a, a+1, a+2, ..., a+n-1]),此时最大不同元素数量就是
2025-04-28:替换为数位和以后的最小元素。用go语言,给定一个整数数组 nums,你需要将数组中每个元素替换成该元素各位数字之和。 完成替换后,请返回数组中的最小值。...输入准备 • 接收一个整数数组 nums,数组长度为 1 到 100 之间,数组中每个元素的范围是 1 到 10000。 2....遍历数组元素 • 依次访问数组中的每一个元素 num。 4. 计算数位和 • 对当前元素 num,计算其各个位数的数字和。...更新最小值 • 用刚计算得到的数位和与当前 minV 进行比较。 • 如果该数位和更小,则将其更新为新的 minV。 6. 完成遍历 • 重复步骤 3-5,直到所有元素都完成数位和的计算并比较。...补充说明 • 题目中提到“将数组中每个元素替换成各位数字之和”,代码虽然没有将数组元素实际修改,但计算过程模拟了替换后的数值计算,最终得到的最小值即为替换后数组中的最小元素。
2025-12-05:检查元素频次是否为质数。用go语言,给定一个整数数组 nums,判断数组中是否存在某个数,它在数组中出现的次数是质数。...统计元素频率 程序首先创建一个空的映射(map)cnt,用于记录每个整数在数组 nums 中出现的次数。接着,遍历整个 nums 数组。...对于数组中的每一个元素 x,都在映射 cnt 中将其对应的计数值加 1。遍历结束后,映射 cnt 中就存储了每个不同数字在数组中出现的频次 。 2....检查频次是否为质数 获得频率统计后,程序开始遍历映射 cnt 中的所有值,即每个数字的出现频次 c。...返回判断结果 在遍历频次的过程中,只要发现任何一个频次 c 被确认为质数,函数会立即返回 true,表示数组中存在出现次数为质数的元素。
给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。假设你总是可以到达数组的最后一个位置。...遍历数组,当cur小于i,步数加1,下次可达变成当前可达,下次可达取自己和i+arr[i]的最大值。最后返回step。时间复杂度是O(N)。 代码用golang编写。
2022-04-17:给定一个数组arr,其中的值有可能正、负、0, 给定一个正数k。 返回累加和>=k的所有子数组中,最短的子数组长度。 来自字节跳动。力扣862。...答案2022-04-17: 看到子数组,联想到结尾怎么样,开头怎么样。 预处理前缀和,单调栈。 达标的前缀和,哪一个离k最近? 单调栈+二分。复杂度是O(N*logN)。 双端队列。...} let mut l: isize = 0; let mut r: isize = 0; for i in 0..N + 1 { // 头部开始,符合条件的,...ans = get_min(ans, i as isize - dq[l as usize]); l += 1; } // 尾部开始,前缀和比当前的前缀和大于等于的
2025-07-08:使数组元素互不相同所需的最少操作次数。用go语言,给定一个整数数组 nums,要求通过若干次操作使数组中的元素全部唯一。...每次操作都需要从数组开头移除最多三个元素;如果剩余元素不足三个,则将其全部删除。最终,数组为空或所有元素互不重复时即满足条件。请你计算完成此目标所需的最少操作次数。...标记已见过的元素:使用一个布尔数组 seen 来记录已经出现过的元素。从后向前遍历数组时,如果遇到一个已经标记为 true 的元素,说明这个元素在之前已经出现过,因此需要移除从开头到当前位置的元素。...初始化一个布尔数组 seen,大小为 128(因为题目中 nums[i] 的最大值为 100,所以 128 足够覆盖所有可能的值)。 2....从数组的末尾开始向前遍历: • 对于当前元素 nums[i],检查 seen[nums[i]] 是否为 true: • 如果是,说明 nums[i] 是一个重复元素,需要移除从开头到 i 的所有元素。
2022-10-19:一个数组如果满足 : 升降升降升降......或者 降升降升...都是满足的 给定一个数组, 1,看有几种方法能够剔除一个元素,达成上述的要求 2,数组天然符合要求返回0 3,剔除1个元素达成不了要求,返回-1, 比如: 给定3, 4, 5, 3..., 7,返回3 移除0元素,4 5 3 7 符合 移除1元素,3 5 3 7 符合 移除2元素,3 4 3 7 符合 再比如:给定1, 2, 3, 4 返回-1 因为达成不了要求。...if right_up[0] || right_down[0] { return 0; } // 删掉0位置的数,数组达标还是不达标!...arr[i as usize] && tmp; i += 1; l += 1; r += 1; } // 单独算一下 删掉n-1位置数的时候
用go语言,给定一个整数数组 nums 和一个正整数 k,请找出所有长度最多为 k 的连续子数组,计算这些子数组中最大值和最小值的和,并返回最大的那个和。...具体来说: • 对于最小值,我们需要计算每个元素作为最小值出现在多少个子数组中,然后乘以该元素的值,得到其贡献。...• 对于最大值,类似地,我们需要计算每个元素作为最大值出现在多少个子数组中,然后乘以该元素的值,得到其贡献。...• 对于每个元素 nums[i],找到左边第一个比它小的元素的位置 l 和右边第一个比它小的元素的位置 r。这样,nums[i] 是 [l+1, r-1] 区间内的最小值。...子数组数量的计算 对于一个元素 nums[i],其作为最小值的范围是 [l+1, r-1],其中 l 是左边第一个比它小的位置,r 是右边第一个比它小的位置。
2026-03-20:统计有序数组中可被 K 整除的子数组数量。用go语言,给定一个非降序排列的整数数组 nums,以及一个正整数 k。...定义:如果数组中一段连续、非空的子数组,它所有元素的和能被 k 整除,那么这个子数组就是良好子数组。 要求:统计数组中所有不同的良好子数组的个数(只要子数组的位置 / 序列不同,就算不同的子数组)。...0 • 数组元素:[1, 2, 3],k=3 第一步:遍历第1个元素(下标i=0,值x=1) 1....遍历过程中,每遇到不同数字,就把上一段连续数字的前缀和余数存入计数器,再用当前前缀和余数匹配计数器,累加符合条件的子数组数量。 时间复杂度 & 额外空间复杂度 1....执行过程:遍历数组→分段统计连续相同元素→更新前缀和→匹配余数计数器→累加答案; 2. 时间复杂度:O(n)(线性复杂度,适配10万长度的数组); 3.