Здравейте.
Имам проблем с тази задача https://judge.telerikacademy.com/problem/00401sortednumbers
Може ли някой да ми подскаже, защо програмата ми е много бавна и не минава, нито един от тестовете ?
Не използвах конкатенация с ‘+’, а отделен метод уж да е по-бързо.
Ето кода:
let number = '',
array = new Array(),
outputLine = '';
number = gets();
while (number !== undefined){
number = number.replace(',', '');
number = Number(number);
array.push(number);
number = gets();
}
array.sort(function(a, b){
return b - a;
});
for (let i = 0; i < array.length; i = i + 1){
if (i === array.length - 1){
outputLine = outputLine.concat(array[i]);
}
else{
outputLine = outputLine.concat(array[i]);
outputLine = outputLine.concat(', ');
}
}
print(outputLine);
Проблема е, че не излизаш от някой от loop овете!
Това решение няма да работи никога защото while (number !== undefined){ number = number.replace(',', ''); number = Number(number); array.push(number); number = gets(); }
number = gets() винаги след първото извикване ще ти връща undefined, защото input-а ти идва на един ред! Изобщо този while е много ненамясто и логиката вътре е греша за тази задача!
Използвай split, map, sort, и накрая сложи един join и можеш да я решиш на един ред!
Оставям ти сам да си го попълниш
Привет, работи, ако се получава входа ред по ред, без предварително да се уточни броя на елементите i при последнито извикване когато не получи нещо, ще върне undefined от gets() или NaN от +gets(), но условието е друго