当前位置: 首页 > 知识库问答 >
问题:

求包含所有元素的最小长度子数组的长度

齐文栋
2023-03-14

给定一个整数N和一个长度为N的数组,该数组由0到N-1的整数组成,可能包含也可能不包含所有整数,也可能包含重复数。查找一个从索引i到索引j的子数组(i, j),使其包含数组中的所有整数,并且具有最小长度。输出是这样一个子数组的长度

示例:A=[2,1,1,3,2,1,1,3],因此最小子数组长度=3,因为A[2]到A[4]包含所有数字

我的想法:

维护一个计数器数组和两个索引开始和结束,其中包含数组从开始到结束索引的元素计数。每次更新计数器的值并将结束设置为当前索引并递增开始直到计数器[开始]

这种方法对我来说似乎在逻辑上是正确的。我在编程测试中遇到了这个问题,并且确实通过了所有示例测试用例。但是它失败了所有隐藏的案例。我可能在这里遗漏了一些东西。

共有2个答案

霍建柏
2023-03-14

首先找到不同元素的数量,然后应用滑动窗口。

看起来与 https://leetcode.com/problems/subarrays-with-k-different-integers/ 相似

柳胜
2023-03-14

解析数组一次以计算其非重复成员。

接下来,使用 2 个指针。在指针之间保留值计数的计数映射,并跟踪指针之间的不同元素的数量。

任何时候指针之间的不同元素的数量太少,前进指针,o/w后指针。

跟踪并返回具有不同 elt 完整计数的指针之间的最小距离。

 类似资料:
  • 假设我们有一个数组 {7, 3, 7, 3, 1, 3, 4, 1}。我需要的是一个算法(最好是一些 C 代码示例),它将返回包含数组所有元素的最小子数组的长度。 在这种情况下,它将是 5:{7, 3, 1, 3, 4},这是原始数组的最短子数组,其中包含数组的所有元素,即 1、3、4 和 7。 此外,数组 {2, 1, 1, 3, 2, 1, 1, 3} 的另一个示例,算法应返回 3,因为我们正

  • 我有这个问题: 您将获得一个整数 A 和一个整数 k 的数组。您可以将 A 的元素递减到 k 次,目标是生成一个元素都相等的连续子数组。返回可以用这种方式生成的最长的连续子数组的长度。 例如,如果 A 是 [1,7,3,4,6,5] 并且 k 是 6,那么您可以生成 [1,7,3,4-1,6-1-1-1,5-1-1] = [1,7,3,3,3,3],因此您将返回 4。 最佳解决方案是什么?

  • 文件输入。txt由两行组成:第一行是整数N空格,然后是整数K(1 ≤ N、 K级≤ 250000). Second有N个空间除数的整数,其中每个整数都小于或等于K。保证从1到K的每个整数都在数组中。任务是找到包含所有整数的最小长度的子数组。并打印其开始和结束。请注意,索引从1开始。 示例: 我在最近的一次编程比赛中完成了这个任务。一切都结束了,我没有作弊。我已经使用python 3实现了它: 这个

  • 我正在尝试解决这个算法问题: https://dunjudge.me/analysis/problems/469/ 为了方便起见,我总结了下面的问题陈述。 给定一个长度为 ( 多数元素定义为发生的元素 时限:1.5s 例如: 如果给定的数组是[1,2,1,2,3,2], 答案是5,因为从位置1到5 (0索引)的长度为5的子数组[2,1,2,3,2]具有出现为3的数字2 首先想到的是一个明显的强力(

  • 这里,在这段代码中,它打印序列的最大子序列的长度,该序列先增加后减少,或者反之亦然。 例如: 输入:1,11,2,10,4,5,2,1 如增-减-增或减-增-减 示例: 投入:7 16 1 6 20 17 7 18 25 1 25 21 11 5 29 11 3 3 26 19

  • 问题内容: 给出了长度为 n 的数组。查找子数组元素的乘积之和。 说明 数组 A* = 长度 3的 [2,3,4] 。 * 长度为 2的 子数组= [2,3],[3,4],[2,4] [2,3] 中元素的乘积= 6 [3,4] 中元素的乘积= 12 [2,4] 中元素的乘积= 8 长度 2 = 6 + 12 + 8 = 26的子数组的总和 同样,对于长度 3 ,Sum = 24 因此,乘积以模 1