【发布时间】:2021-08-17 07:18:36
【问题描述】:
给定数组 [“1510”、“1518”、“1520”、“1523”、“1530”、“1483”、“1485”] 预期输出:-
Smallest - 1510
Largest - 1530
另一个数组 ["310", "314", "320", "319", "323", "313", "330"] 预期输出:-
Smallest - 310
Largest - 330
我下面的代码获得了解决上面列出的第一个问题时遇到问题的最小值和最大值,因为它返回 1483 作为最小和 1485 作为最大。 max 和 min 之间的差异应该更大。
知道如何获得它吗?
function minMax(array) {
if(array.length <= 0) return [0, 0];
let max = Math.max.apply(null, array);
let min = Math.min.apply(null, array);
let max_index = array.lastIndexOf(String(max));
let min_index = array.indexOf(String(min));
if(min_index >= max_index) {
array.splice(max_index, 1);
[min, max] = minMax(array);
}
return [min, max];
}
【问题讨论】:
-
顺便说一句,为什么不是数组中的数字?
-
如果数组按照
[3, 2, 1]这样的降序排列怎么办? -
有两个可能的答案:[绝对最小元素,它右边的最大值] 或 [绝对最大元素,它左边的最小值]。你在找哪一个?
-
@Akhil,数组不应该被排序。它只会是未排序的数组。
-
@NinaScholz,您可以将其作为数字数组。这只是我正在工作的东西,它具有数组元素作为字符串(这是一个数字)
标签: javascript node.js arrays performance min