2017-02-12 54 views
0

我的代码有效,但它不被接受以通过挑战。任何帮助我做错了将不胜感激。Codewars挑战赛 - 积极球数/底数总和

挑战描述:

鉴于整数数组。 返回一个数组,其中第一个元素是正数的个数,第二个元素是负数的总和。 如果输入数组为空或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]

return [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; 
} 

回答

1

你不是null检查时面临的挑战明确要求,“如果输入数组为空或null,则返回一个空数组”。请考虑更改代码如下

if (input == null || input.length < 1){ 
    return []; 
} 
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; 
} 

所以,你需要检查是否输入===空(并返回空数组),和如果输入[i] < = 0(加上负数之和)