2017-02-12 3 views
0

Мой код работает, но он не принимается, чтобы передать вызов. Любая помощь в том, что я делаю неправильно, будет оценена по достоинству.Codewars Challenge - количество положительных/сумма отрицательных

вызов Описание:

Учитывая массив целых чисел. Возвращает массив, где первый элемент - это число положительных чисел, а второй элемент - сумма отрицательных чисел. Если массив ввода пусто или нулевой, возвращает пустой массив:

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

ответ

1

Вы не проверяла 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 (сумма отрицательных значений)

Смежные вопросы