Javascript 仅使用一个循环的数组中相同值之间的差异
如何在一个循环复杂度完全为ON的数组中找到相同值的最小索引和最大索引之间的差异 例如,给定数组A:Javascript 仅使用一个循环的数组中相同值之间的差异,javascript,Javascript,如何在一个循环复杂度完全为ON的数组中找到相同值的最小索引和最大索引之间的差异 例如,给定数组A: [4, 6, 2, 2, 6, 6, 1]; 该函数返回4。我会使用reduce来记住每个值的第一个索引,然后在执行时更新最后一个值和最大排列,例如 var数据=[4,6,2,2,6,6,1]; 函数getMaxIndexPreAddata{ 返回数据.reducefunctionacc、值、索引{ 如果是acc中的值{ acc[value].lastIndex=index }否则{ acc[
[4, 6, 2, 2, 6, 6, 1];
该函数返回4。我会使用reduce来记住每个值的第一个索引,然后在执行时更新最后一个值和最大排列,例如
var数据=[4,6,2,2,6,6,1];
函数getMaxIndexPreAddata{
返回数据.reducefunctionacc、值、索引{
如果是acc中的值{
acc[value].lastIndex=index
}否则{
acc[value]={firstIndex:index,lastIndex:index};
}
var spread=acc[value]。lastIndex-acc[value]。firstIndex;
如果acc.maxSpreadlogbetdata您可能会创建一个包含第一个和最后一个索引的值映射,在运行时计算差值。您也可以在运行时更新最大索引差异。你试过什么?要求的只是时间吗?空间复杂度如何?请检查此链接,我希望您能从此链接中找到解决方案。@HardikChapla的可能副本OP正在寻找相等值之间的最大距离,其中距离是最后一次出现的指数减去第一次出现的指数。你应该简要解释为什么这是回答问题的原因。这是怎么回事?这是怎么回事?给定[4,6,2,2,6,6,1,4],当它应该返回7时仍然返回4。Math.max…data和Math.min…data每次都会返回相同的值,因此只能计算一次。[4,6,2,2,6,6,1,4]如何可能返回7.返回数组的长度或高度数值。您能否如上所述进行解释:OP正在寻找相等值之间的最大距离,其中,距离是最后一次出现的索引减去值的第一次出现的索引,因此如果将4放在末尾,则最大距离在前4和最后4之间,因此7–0=7。
var arr = [4, 6, 2, 2, 6, 6, 1];
function test(arr) {
var resultArr = [];
arr.map(function (v, i, a) {
for (var j = arr.length - 1; j >= 0; j--) {
if (v == arr[j]) {
resultArr.push({value: v, result: j - i});
// console.log(v+'的折扣值'+(j-i));
break;
}
}
})
resultArr.sort(function (a, b) {
return b.result - a.result;
})
console.log(resultArr[0])
}
test(arr);