【问题标题】:Find the length of subarray of minimal length consisting of all the elements找到由所有元素组成的最小长度子数组的长度
【发布时间】:2022-01-05 16:52:42
【问题描述】:

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

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

我的想法:

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

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

【问题讨论】:

    标签: algorithm


    【解决方案1】:

    解析一次数组以计算其不同的成员。

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

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

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

    【讨论】:

    • 没错。我们也可以说我们可以采用滑动窗口技术。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-08
      • 2019-11-17
      • 2020-03-22
      • 1970-01-01
      • 2016-06-16
      • 2017-07-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多