Loading...
Antonio97 avatar Antonio97 13 Точки

04. Rotate Array / Arrays and Matrices

Здравейте, на тази задача всички тестове ми минават, без последния. Не му стига времето за него и дава "Недостатъчно време". Някой сблъска ли се с този проблем? Това е моят код на задачата - http://pastebin.com/C68TMAVC

Благодаряsmiley

Тагове:
0
Module: JS Advanced
Janislav avatar Janislav 154 Точки
Best Answer

Трябва да направиш малка промяна във for цикъла:

for (let i = 0; i < rotations % input.length; i++) {
        input.unshift(input.pop());
}

Така не се правят излишни завъртания пример:
Масив от [1, 2, 3, 4, 5] да се завърти 5 пъти (При завъртане на масивът 5 пъти той остава непорменен)
input.length = 5
rotations = 5
rotations(5) % input.length(5) = 0
Така не се правят излишни завъртания и няма да гърмми за време


 

2
Antonio97 avatar Antonio97 13 Точки

Получи се. Благодаря много!

0
Nikola_Andreev avatar Nikola_Andreev 671 Точки

На последния тест подава много голямо число и затова ти дава Time Limit. Реално погледнато ако числото е 1001 , дали ще завъртиш цикъла 1001 пъти или само 1, резултата ще е еднакъв и правиш 1000 излишни завъртания. 

0
Antonio97 avatar Antonio97 13 Точки

Сега проверих и мисля, че не е така. При завъртането на 1 път и при завъртането на 1001 пъти се получават два различни резултата. Може ли да ми помогнете по някакъв начин, защото тотално зациклих и не мога да измисля как да стане задачата?

0
masive avatar masive 3 Точки

Много благодаря за подсказката.

В началото направих проверка на бороя ротации и ако са над 1000 ги редуцирам ( ротации % 1000) при 1001 става 1.

При мен сработи.

0
06/10/2016 11:55:41
butanfire avatar butanfire 32 Точки

Привет,

Да прави си, защото завъртанията зависят от размера на масива, пример :
Нагледно показвам :
Давам 6 завъртания да се направят за 1 2 3
1.    3 1 2
2.    2 3 1
3.    1 2 3
Виждаш ли, че третият резултат е същият като началният?
Това е защото цифрите се извъртат и стигат началното състояние (демек броя ротации на масива е колкото размера на масива, такава е зависимостта)
И затова се ползва модуларно деление, за да го завъртиш само (като в нашият пример) 1 или 2 пъти.
А теста сигурно е дадено число 10 000 и програмата дали работи N пъти по-бързо ако му смалиш броят операции? :)

Поздрави,
Владо

0
MKrusharska avatar MKrusharska 1 Точки

Трябва да сметнеш оптималния брой ротации, които зависят от дължината на масива:

 let usefulRotations = requiredRotations % arr.length;

 

Задачата:

function rotateArr(arr) {

  let requiredRotations = Number(arr.pop());

  let usefulRotations = requiredRotations % arr.length;

  for (let i = 0; i < usefulRotations; i++) {

    arr.unshift(arr.pop());

  }

  console.log(arr.join(" "));

}

 

rotateArr(["Banana", "Orange", "Coconut", "Apple", "15"]);

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