原题目
Create a function that returns the sum of the two lowest positive numbers given an array of minimum 4 integers. No floats or empty arrays will be passed.
For example, when an array is passed like [19,5,42,2,77], the output should be 7.
[10,343445353,3453445,3453545353453] should return 3453455.
Hint: Do not modify the original array.
题目:有一个不少于四个元素的数组,计算其中两个最小值的和。
思路:找出两个最小的元素,然后求和
My Solution
function sumTwoSmallestNumbers(numbers) {
var arr = numbers.sort(function(x, y) {
return x - y;
});
return arr[0] + arr[1];
};
虽然,上面的方法通过了系统的测试,但是原始数组却被改变了!!!
MDN - Array.prototype.sort()
The sort() method sorts the elements of an array in place and returns the array.
function sumTwoSmallestNumbers(numbers) {
var minNums = [numbers[0], numbers[1]].sort(function(x, y) {return x-y});
var len = numbers.length;
for(i=2; i<len; i++){
var num = numbers[i];
if(num < minNums[0]) {
minNums = [num, minNums[0]];
} else if(num < minNums[1]){
minNums[1] = num;
}
}
return minNums[0] + minNums[1];
};
Clever Solution
function sumTwoSmallestNumbers(numbers) {
var [ a, b ] = numbers.sort((a, b) => a - b)
return a + b
}
? 被标注“clever”对多的答案也用了sort
, 也改变了原数组。
对比
我写的方法比较常规,clever solution中采用了ES6的解构赋值和箭头函数
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。