除了数组[10,11,12]之外,我得到了所有通过此解决方案的测试。我被卡住了。谢谢你的帮助
问题:
给定一个整数数组,找到任意两个相邻元素之间的最大绝对差值。
示例:
对于inputArray = [2,4,1,0],输出应为 arrayMaximalAdjacentDifference(inputArray)= 3.
我的测试失败:
输入:
inputArray:[10,11,13]
输出: 0
预期产出: 2
控制台输出: 空
function arrayMaximalAdjacentDifference(arr) {
var dif = 0;
var max = 0;
for(var i = 0; i < arr.length; i++){
dif = arr[i] - arr[i+1];
if(dif > max){
max = dif;
}
}
return max;
}
&#13;
答案 0 :(得分:6)
引用练习:
给定一个整数数组,找到任意两个相邻元素之间的最大绝对差异。
因此,您的代码应如下所示:
CoordinatorLayout
答案 1 :(得分:0)
您可以在数组中创建每个元素及其下一个兄弟之间差异的数组,然后将spread数组传递到Math.max
,如下所示:
重要的一点是获得数字之间差异的绝对值,因此您不会得到负数。我相信这就是造成你问题的原因。
function arrayMaximalAdjacentDifference(arr) {
var differences = arr.map((elem, index) => {
if (arr[index+1] != null) {
return Math.abs(elem - arr[index+1]);
}
else {
return 0;
}
});
return Math.max(...differences);
}
console.log(arrayMaximalAdjacentDifference([10, 11, 13]));
console.log(arrayMaximalAdjacentDifference([1, 5, 3]));
console.log(arrayMaximalAdjacentDifference([4, 8, 16]));
答案 2 :(得分:0)
您可以使用第二个元素的副本迭代数组,并返回delat或最后一个delta的最大值。
function maxDelta(array) {
return array.slice(1).reduce(function (r, a, i) {
return Math.max(Math.abs(array[i] - a), r);
}, 0);
}
console.log(maxDelta([10, 11, 12])); // 1
console.log(maxDelta([2, 4, 1, 0])); // 3
console.log(maxDelta([10, 11, 13])); // 2
&#13;
答案 3 :(得分:0)
当您在问题正文中要求不同时,主题会逐渐减少。我会选择第二个并继续。你可以这样做;
var a = [10, 11, 13],
res = Math.max(...Array(a.length-1).fill().map((_,i) => Math.abs(a[i]-a[i+1])));
console.log(res);
&#13;
答案 4 :(得分:0)
你可以试试这个:
def arrayMaximalAdjacentDifference(inputArray):
max_diff = inputArray[1] - inputArray[0]
dif =[]
for i in range( 1, len(inputArray) ):
if (abs(inputArray[i-1] - inputArray[i]) > max_diff ):
max_diff = abs(inputArray[i-1] - inputArray[i])
dif.append(max_diff)
print(max_diff)
return max_diff
答案 5 :(得分:-1)
您可以使用reduce()
方法
function findM(arr) {
return arr.reduce(function(r, e, i) {
if (arr[i + 1] || arr[i + 1] == 0) {
var diff = Math.abs(arr[i] - arr[i + 1]);
if (diff > r) r = diff
}
return r;
}, 0)
}
console.log(findM([10, 11, 13]))
console.log(findM([2, 4, 1, 0]))