0

它给定的数字列表。如何制作函数,它将搜索出其中的所有对,给出最大的绝对差异。让函数返回一对索引列表,确定找到的对。让我们不要更改条目列表。案例:对于条目列表 [1, 4, 3, -1, 0, 3.5, 4] 函数必须返回 [[1, 3], [3, 6]]。

我应该找到第一个最大值或最小值并进行比较或做什么?

4

1 回答 1

0

我认为你应该使用这个:

findPair = function(inputArray) {
var resultArray = []
    difference = 0;
resultArray.push([]);
for (var i=0; i<inputArray.length;i++) {
    for (var j=0; j<inputArray.length;j++) {
        if (Math.abs(inputArray[i] - inputArray[j]) > difference) {
            difference = Math.abs(inputArray[i] - inputArray[j]);
            resultArray[0][0] = i;
            resultArray[0][1] = j;
        }
    }
}
for (var i=0; i<inputArray.length;i++) {
    for (var j=0; j<inputArray.length;j++) {
        if ((Math.abs(inputArray[i] - inputArray[j]) === difference) && !((resultArray[0][0] === i) && (resultArray[0][1] === j)) && !((resultArray[0][0] === j) || (resultArray[0][1] === i))) {
            resultArray.push([i,j]);
        }
    }
}
return resultArray;
}

在第一个循环中,我们找到具有最大差异的对,然后在第二个循环中找到此重复项。这是 jsfiddle 链接:http: //jsfiddle.net/4CbsT/

于 2013-06-13T14:53:57.567 回答