Loading...
KristianZanev avatar KristianZanev 16 Точки

Задача - Max Number проблем. Js fundamentals

Здравейте,

Имам проблем със следната задача - max number ЛИНК  , ще се радвам ако някой помогне. Джъдж дава 83/100, не показва инпут.

function max(input) {
  let arr = input;
  let arr2 = [];
  let maxNum = 0;

  for (let i = 0; i < arr.length; i++) {
    maxNum = Math.max(...arr);
    if (arr[i] === maxNum) {
      arr2.push(maxNum);
      arr[i] = 0;
    }
  }
  let onlyUniqueNums = [...new Set(arr2)];

  console.log(onlyUniqueNums.join(" "));
}

max([14, 24, 3, 19, 15, 17]);

 

Тагове:
0
JavaScript Fundamentals
JivkoJelev avatar JivkoJelev 235 Точки
Best Answer

Мисля че ти гърми при case с отрицателни числа.
Не съм го тествал, но на пръв поглед така изглежда.
Ето ти едно по-кратко решение.

 

function max(arr) {
let result = [];
    while(arr.length !== 0) {
        let [current, biggest] = [arr.shift(), Math.max(...arr)]
        if(current > biggest) result.push(current);
   }
   return result.join(' ');
}
1
02/06/2019 11:32:52
KristianZanev avatar KristianZanev 16 Точки

Благодаря, ще опитам. Доста ми допадна твоя начин на решение, не би ми хрумнало да напиша кода така.

1
nshterev avatar nshterev 2 Точки

Здравейте, едно решение и от мен, дава 100 от 100, използвам условие следващият елемент (++j) да е по-малък от актуалния (current), да не минава дължината на масива (i < arr.length) и всеки път проверява дали последното число е по-малко от актуалното, понеже ако е винаги по-голямо, то принтираме само него (последното).

function fun(arr) {

   let outputString = "";

  for (let i = 0; i < arr.length; i++) {

    let current = arr[i];

    let j = i;

    if (current > arr[++j] && i < arr.length && current > arr[arr.length - 1]) {

      outputString += current + " ";

    }

    if (i == arr.length - 1) {

      outputString += arr[i];

    }

  }

  console.log(outputString);

}

1
28/01/2023 20:36:39
MartinBG avatar MartinBG 4803 Точки

@nshterev

Променливата j е излишна, a начинът, по който я използвате е странен (което е лошо, когато става дума за програмиране, защото затруднява четенето, следването на логиката и може да доведе до грешки):

    let j = i;
    if (current > arr[++j] && ... )

Горното може да се запише много по-просто така:

    if (current > arr[i + 1] ...]) {

:)

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.