Проблемы с поиском пика в горном массиве с дубликатами-бинарный поиск не работает, как и ожидалосьPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Проблемы с поиском пика в горном массиве с дубликатами-бинарный поиск не работает, как и ожидалось

Сообщение Anonymous »

Я пытаюсь решить проблему, в которой мне нужно найти элемент пика в горном массиве, который может содержать дубликаты. < /p>
Пиковой элемент-это тот, где значения сначала увеличиваются, а затем уменьшаются (но плато, такие как [6,6,6,6], может появиться после пика). Вот код, который я написал: < /p>
nums = [1, 3, 7, 6, 6, 6, 6, 6, 4, 3, 2, 1]

l = 0
r = len(nums) - 1

while l < r:
# Skip duplicates on the left
while l < r and nums[l] == nums[l + 1]:
l += 1
# Skip duplicates on the right
while l < r and nums[r] == nums[r - 1]:
r -= 1

m = (l + r) // 2

if nums[m] < nums[m + 1]:
l = m + 1
else:
r = m

print(nums[l]) # Expected output: 7
< /code>
Для ввода: < /p>
[1, 3, 7, 6, 6, 6, 6, 6, 4, 3, 2, 1]
< /code>
Я ожидаю, что пик будет 7, но выход выходит как 6. < /p>
Я подозреваю, что это из -за того, что плато путает логику двоичного поиска. Как я могу правильно обрабатывать дубликаты, особенно когда после пика есть длинная плоская секция?>

Подробнее здесь: https://stackoverflow.com/questions/796 ... search-not
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»