У меня есть алгоритм, основанный на проблеме, когда вам нужно найти минимальное количество прыжков, чтобы добраться до конца массива. Эта проблема была задана у выродков для geeks и у них нет линейного алгоритма времени, в моем случае алгоритм находится в линейном времени, но , для которого тестовый случай завершит мой алгоритм? .The ссылку для задачиПроверить правильность алгоритма для минимального числа переходов в массиве
Ссылка: - http://www.geeksforgeeks.org/minimum-number-of-jumps-to-reach-end-of-a-given-array/
Входной сигнал: обр [] = {1, 3, 5, 8, 9, 2, 6, 7, 6, 8, 9}
Начиная с первого элемента, мы знаем, что максимальный диапазон элемента 1, следовательно, мы можем двигаться только один шаг вперед, так из 1-> 3
Теперь на втором этапе мы знаем диапазон элемент 3, следовательно, с этого шага мы вычисляем max из этого диапазона, поэтому от 3 мы можем либо выбрать 5,8,9, а максимум в этом диапазоне 9
Итак, сначала перейдите к 9, что 1-> 3-> 9, а затем из 9 мы движемся к концу массива, поскольку мы знайте, что девять шагов более чем достаточно, чтобы достичь цели.
Угловой корпус: если мы обнаруживаем нуль в конце, мы ничего не делаем, поскольку мы уже достигли конца. Но если в начале или в диапазоне, где 0 - максимальный элемент в этом диапазоне, для продвижения вперед мы возвращаем -1, поскольку мы не можем двигаться дальше , пожалуйста, скажите, есть ли ошибка в этом алгоритме.
ожидание на SO что вы бы попытаться решить эту проблему (в том числе {псевдо} кода), и мы попытается помочь вам, если это не удастся. Наша задача - не отлаживать вас, прежде чем вы это сделаете. – KevinDTimm