我的代码有效,但是为了通过挑战,它没有被接受。对我所做错的任何帮助都将不胜感激。
挑战说明:
给定一个整数数组。 返回一个数组,其中第一个元素是正数的数量,第二个元素是负数的总和。 如果输入数组为空或null,则返回一个空数组:
C#/Java: new int[] {} / new int[0];
C++: std::vector<int>();
JavaScript/CoffeeScript/PHP/Haskell: [];
Rust: Vec::<i32>::new();
注意! 不应更改传递的数组。在这里阅读更多。*
例如:
输入 [1,2,3,4,5,6,7,8,9,10,-11,-12,-13,-14,-15]
返回 [10,-65]。
我的代码:
function countPositivesSumNegatives(input) {
if (input.length < 1){
return [];
}
var newArray = [0, 0];
for (var i = 0; i < input.length; i++){
if (input[i] > 0)
{
newArray[0] += 1;
}
else {
newArray[1] += input[i];
}
}
return newArray;
}
答案 0 :(得分:1)
当挑战明确要求“如果输入数组为空或为空,返回空数组”时,您不会检查null
。请考虑更改代码如下
if (input == null || input.length < 1){
return [];
}
答案 1 :(得分:0)
此代码适用于我(使用JavaScript)
function countPositivesSumNegatives(input) {
if (input === null || input.length < 1) {
return [];
}
var array = [0, 0];
for(var i = 0; i < input.length; i++) {
if(input[i] <= 0) {
array[1] += input[i];
} else {
array[0] += 1;
}
}
return array;
}
所以,你需要检查输入=== null(并返回空数组),如果输入[i]&lt; = 0(负数之和)
答案 2 :(得分:0)
这是我在Javascript中使用的一种方法,因此也许您也可以借鉴一些想法
function countPositivesSumNegatives(input) {
if (input == null || input.length < 1){
return [];
}
var sum =0;
var pos =[];
for (var i=0; i<input.length; i++){
if(input[i]>0){
pos.push(input[i]);
} else{
sum += input[i];
}
}
return [pos.length, sum];
}