gpt4 book ai didi

arrays - 查找给定值的所有数组子序列

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:00:22 29 4
gpt4 key购买 nike

我正在寻找一种给出如下列表的算法:

[1, 1, 2, 1, 1, 5, 1, 1, 1, 1, 2, 1]

可以找到并返回给定值的所有子序列。例如,如果给定值 1,函数将返回 [[1, 1], [1, 1], [1, 1, 1, 1], [1]] .

我认为这类似于求和数组的所有子序列或查找给定字符串的所有子序列之类的问题,但算法从来都不是我的强项。答案可以是伪代码或语言不可知论。如果您不介意,能否解释一下解决方案的复杂性?

如果有帮助,我可以解释我需要它做什么。如果需要,请发表评论。

最佳答案

我们可以通过扫描数组两次来在 O(n) 时间复杂度内完成此操作。伪代码:

//use an array list so we can access element at an index in O(1) time
outputArrays = new ArrayList<int[]> //list of arrays

//loop to declare arrays of outputs - this scans each element once
int currLen = 0;
for (item in inputArray) {
if (item = itemToLookFor) {
currLen++;
}else if (currLen > 0) {
currLen = 0;
outputArrays.add(new int[currLen]);
}
}

//loop to actually populate the output - this scans each element once
currLen = 0;
currIndex = 0;
for (item in inputArray) {
if (item = itemToLookFor) {
outputArrays.getElement(currIndex)[currLen] = item;
currLen++;
}else if (currLen > 0) {
currLen = 0;
currIndex++;
}
}

如果有什么我可以澄清的,请告诉我。

关于arrays - 查找给定值的所有数组子序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36733684/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com