Open nunnly opened 9 years ago
function minimumSum(value, num) {
return value.join("☀").split("☀").sort(function(a, b) { return parseInt(a) - parseInt(b); }).slice(0, num).reduce(function(v, n) {
return v + parseInt(n);
}, 0);
}
function maximumSum(value, num) {
return value.join("☀").split("☀").sort(function(a, b) { return parseInt(b) - parseInt(a); }).slice(0, num).reduce(function(v, n) {
return v + parseInt(n);
}, 0);
}
function minimumSum(value, num) {
_newV = (value.sort(function(a, b){return +a > +b})).slice(0, num);
return _newV.reduce(function(prev, curr){ return prev + curr});
}
function maximumSum(value, num) {
_newV = (value.sort(function(a, b){return +a > +b})).slice(-num);
return _newV.reduce(function(prev, curr){ return prev + curr});
}
// 测试用例
var values = [1,3,12,4,5];
console.log(minimumSum(values, 2)); // => 1+3 = 4
console.log(values); // 这里出错了,因为把原来的数组顺序打乱了。
console.log(maximumSum(values, 3)); // => 4+5+12 = 21
@think2011
var values = [1,3,12,4,5];
console.log(minimumSum(values, 2)); // => 1+3 = 4
console.log(values);
console.log(maximumSum(values, 3)); // => 4+5+12 = 21
你自己看一下结果。
@XadillaX 4 和 21, 是指要输出 1+3 = 4 和 4+5+12 = 21吗? (⊙o⊙)哦,谢谢!我明白了,我把数组给切了!。
@think2011 那我举个例子:
var values = [1,3,12,4,5];
console.log(minimumSum(values, 3));
console.log(maximumSum(values, 3));
你觉得要输出什么,而你的代码输出什么了。
@think2011 你这还是把原数组顺序打乱了啊。
@XadillaX (^o^)/YES! 难怪你需要 .join("☀").split("☀")
。
function minimumSum(values, n) {
values.sort(function(x,y){
return x-y
})
var num = 0;
for(var i=0;i<n;i++){
num += values[i];
}
return num
}
function maximumSum(values, n) {
values.sort(function(x,y){
return y-x
})
var num = 0;
for(var i=0;i<n;i++){
num += values[i];
}
return num
}
写代码之前真心不能看@XadillaX 写的答案。。。。
@nunnly 为毛 -。 -
你也把 values
的顺序打乱了。