Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 仅使用一个循环的数组中相同值之间的差异_Javascript - Fatal编程技术网

Javascript 仅使用一个循环的数组中相同值之间的差异

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[

如何在一个循环复杂度完全为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[value]={firstIndex:index,lastIndex:index}; } var spread=acc[value]。lastIndex-acc[value]。firstIndex; 如果acc.maxSpread var数据=[4,6,2,2,6,6,1]; 函数betdata{ 返回Math.max…data.filtera=>a!=Math.max…data&&a!=Math.min…data }
logbetdata您可能会创建一个包含第一个和最后一个索引的值映射,在运行时计算差值。您也可以在运行时更新最大索引差异。你试过什么?要求的只是时间吗?空间复杂度如何?请检查此链接,我希望您能从此链接中找到解决方案。@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);