07. Max Sequence of Increasing Elements // Arrays and Lists - Exercises
Здравейте колеги, на моето решение ми дава 71/100 точки и не мога да си открия грешката. Ако някой може да помогне ще съм много благодарен :) http://pastebin.com/eLywUHt6
Здравейте колеги, на моето решение ми дава 71/100 точки и не мога да си открия грешката. Ако някой може да помогне ще съм много благодарен :) http://pastebin.com/eLywUHt6
Здравей!
Аз виждам няколко проблема:
1. Тази проверка: if (nums[i] == nums[i - 1] + 1) не е правилна. Търси се редица, в която следващият елемент е по-голям от предишния и не точно само с 1. Затова трябва да се промени на if (nums[i] > nums[i - 1])
2. Необходима ти е още една променлива start, която да пази началото на текущата редица, която не е непременно търсената най-дълга. Тя първоначално трябва да е 0 и стойността й се променя на i в else условието, където връщаш броячча length на 1.
3. Променливата bestStart пази индекса на търсената най-дълга редица, затова не е правилно на 34-и ред да й присвояваш nums[i - bestLength + 1] --> това е елемент от масива. Би трябвало да й присвоиш стойността на start, когато се length > bestLength. Също така би трябвало да се инициализира със стойност 0, а не 10 (защо 10?).
4. При печатането на резултата трябва да печаташ елементи от масива, не само индекси. По-лесно е да започнеш for цикъла направо от bestStart (все пак затова я има тази променлива) и да продължава до bestStart + bestLength, печатай nums[i]. Така е най-чисто и това е идеята на двете променливи best*.
Ето поправен кода http://pastebin.com/iFtNWhj6 .
Поздрави!
Благодаря много за изчерпателния и бърз отговор!
Поздрави