【发布时间】:2019-11-17 05:19:24
【问题描述】:
假设我们有一个数组 {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,因为我们要查找的子数组是 {1, 3, 2} (原始数组的索引 2-4)。
我在这里发现了一些类似的问题:Find minimum length of sub-list containing all elements of a list 但它似乎没有回答。
函数签名应该是这样的:
int algorithm(std::vector<int> &arr){...}
【问题讨论】:
-
看看“最长公共子序列”。算法。它最初用于字符串,但也可以适应您的问题。
-
你到底卡在哪里了?你有更具体的问题吗?你还在为 C++ 苦苦挣扎吗?您不确定无论语言如何,该算法都将如何工作?你试过什么?
-
我在 C++ 实现方面苦苦挣扎。我需要具有给定签名的 C++ 代码。
-
那太宽泛了。你到底在挣扎什么?您能否添加您拥有的代码并指出您的问题所在?
标签: arrays algorithm distinct-values sub-array