Завъртане на масив
Здравейте,
Имам следния проблем:
В задача 2 от Exam Preparation lll има един тест, на който пише rollRight 2000000000 times. Очевидно е, че с int няма да стане, за това направих променливата count от тип long. Проблемът, който настъпи обаче, както може да преположите е, че времето за изпълнение не стига, защото завъртането на масива цикли прекалено дълго. Та исках да Ви попитам как мога да намаля този count, така че да не цикли толкова дълго, но да дава верен резултат при такива големи стойности? В една от лекциите от Programming Fundamentals това беше споменато, но не успях да го открия, за това ще се радвам, ако някой даде идея.
Да, нещо такова беше казал и лектора. Тоест, това значи ли, че в моя случай броя на завъртанията ми ще са array.Length % count? Не мога да го схвана особено.
count % array.Length пъти. Представи си, че имаш масив от 5 елемента - искаш да го завъртиш 7 пъти. 7 % 5 = 2. Трябва да го завъртиш точно два пъти, за да получиш резултата, който искаш. В случая първите 5 завъртания ще са излишни, защото при петото завъртане масивът си идва пак в начално положение:
Имаш масив - 1 2 3 4 5 - дължина 5 - искаш да го завъртиш 7 пъти:
5 1 2 3 4
4 5 1 2 3
3 4 5 1 2
2 3 4 5 1
1 2 3 4 5 - начално положение
5 1 2 3 4
4 5 1 2 3 - завъртане №7, което е равно на завъртане №2, понеже 7 % 5 = 2.
Т.е. няма смисъл да въртиш един масив повече пъти отколкото е дължината му, защото при array.Length завъртания се получава същия резултат.
100/100, благодаря много за помощта!