Локальный максимум в 2D массив может быть определен как значение таким образом, что все это 4 соседей меньше или равна ей, то есть для a[i][j]
быть локальным максимумом,Нахождение локальных максимумов в 2D массив
a[i+1][j] <= a[i][j]
&& a[i-1][j] <= a[i][j]
&& a[i][j+1] <= a[i][j]
&& a[i+1][j-1] <= a[i][j]
Меня попросили найти все локальные максимумы в заданном двумерном массиве.
Наивный способ сделать это - просто пройти через все элементы и проверить, является ли каждый элемент локальным максимумом. Это было бы O (n^2). Я чувствую, что вы не можете сделать это лучше, хотя мой друг настаивает на том, что должен существовать асимптотически лучший алгоритм. Любые намеки?
Я думал о линиях Divide и Conquer, но я чувствую, что невозможно обнаружить все локальные максимумы, не пройдя через все числа, что обязательно будет O (n^2). Я прав, или я что-то упускаю?
Если вы просто хотите один из локальных максимумов, то можно найти менее чем за n^2 раза. –
@Habisoft дал лучший ответ –