我需要在不改变原始数组(参数)的情况下解决编码练习。 编码问题:
给定五个正整数,找到可以通过将五个整数中的四个恰好相加来计算的最小值和最大值。然后将各自的最小值和最大值打印为一行两个空格分隔的长整数。
示例
最小总和为 ,最大总和为 。该函数打印
16 24
功能说明
在下面的编辑器中完成 miniMaxSum 函数。
miniMaxSum 有以下参数:
arr:整数数组
打印
在一行上打印两个以空格分隔的整数:元素的最小和和最大和。
输入格式
单行包含五个空格分隔的整数。
限制
输出格式
打印两个以空格分隔的长整数,分别表示最小和最大值,可以通过将五个整数中的四个精确相加来计算。 (输出可以大于 32 位整数。)
这是我的职责:
function miniMaxSum(arr) {
let minSum = 0;
let maxSum = 0;
let maxArray = arr.toSorted((a, b) => (b -a));
let minArray = arr.toSorted((a, b) => (a - b));
// Write your code here
console.log(maxArray, minArray)
for(let i = 0; i < arr.length - 1 ; i++){
minSum += minArray[i];
maxSum += maxArray[i];
}
console.log(minSum, maxSum)
}
当我尝试运行代码时出现此错误
我用这个代替
function miniMaxSum(arr) {
let minSum = 0;
let maxSum = 0;
let maxArray = [...arr].sort((a, b) => (b - a));
let minArray = [...arr].sort((a, b) => (a - b));
// Write your code here
for(let i = 0; i < arr.length - 1 ; i++){
minSum += minArray[i];
maxSum += maxArray[i];
}
console.log(minSum, maxSum)
}
我只是想知道为什么 toSorted() 不起作用
谢谢你
大概是因为自 change array by copy 提案发布以来,他们使用的任何 JavaScript 引擎都没有更新,添加了
toSorted
(以及各种其他方法)。这是最近的事情,ES2023。因此,虽然主要引擎(V8、JavaScriptCore、SpiderMonkey)的最新版本将不加标记地提供它,但只有稍微过时的版本不会具有它(或者仅将其置于标记后面)。看来 HackerRank 使用的引擎稍微落后了。