Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 23.10.2020
Сообщений: 5

Поиск в сломанном массиве

29.10.2021, 19:42. Показов 1723. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Алла ошиблась при копировании из одной структуры данных в другую. Она хранила массив чисел в кольцевом буфере. Массив был отсортирован по возрастанию, и в нём можно было найти элемент за логарифмическое время. Алла скопировала данные из кольцевого буфера в обычный массив, но сдвинула данные исходной отсортированной последовательности. Теперь массив не является отсортированным. Тем не менее, нужно обеспечить возможность находить в нем элемент за O(logn). Можно предполагать, что в массиве только уникальные элементы.

Формат ввода
Функция принимает массив натуральных чисел и искомое число k. Длина массива не превосходит 10000. Элементы массива и число k не превосходят по значению 10000.
В примерах:
В первой строке записано число n –— длина массива.
Во второй строке записано положительное число k –— искомый элемент.
Далее в строку через пробел записано n натуральных чисел, каждое из которых не превосходит 200000.

Формат вывода
Функция должна вернуть индекс элемента, равного k, если такой есть в массиве (нумерация с нуля). Если элемент не найден, функция должна вернуть −1.

Изменять массив нельзя.

Для отсечения неэффективных решений ваша функция будет запускаться от 100000 до 1000000 раз.

Пример 1
Ввод

9
5
19 21 100 101 1 4 5 7 12

Вывод
6

Пример 2
Ввод

2
1
5 1
Вывод
1

Помогите исправить замечания к коду:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
def broken_search(nums, target) -> int:
    def search(low, high):
        low_num = nums[low]
        if target == low_num:
            return low
        if target == nums[high]:
            return high
        if high - low < 2:
            return -1
        mid = (low + high) // 2
        mid_num = nums[mid]
        if target == mid_num:
            return mid
        if (
            mid_num < low_num < target
            or low_num < target < mid_num
            or target < mid_num < low_num
        ):
            return search(low, mid)
        return search(mid, high)
    return search(0, len(nums) - 1)
Нужно оптимизировать строку, избавившись от разности, не изменяя алгоритма
Python
1
if high - low < 2
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.10.2021, 19:42
Ответы с готовыми решениями:

Поиск в сломанном массиве
Подскажите пожалуйста есть такое замечание по коду, строка def binary_search(arr: list, x: int, left: int, right: int) -&gt; int:...

Поиск в сломанном массиве
Алла ошиблась при копировании из одной структуры данных в другую. Она хранила массив чисел в кольцевом буфере. Массив был отсортирован по...

Задача Поиск в сломанном массиве
Добрый день! Имеется задача такая задача: Алла ошиблась при копировании из одной структуры данных в другую. Она хранила массив чисел...

3
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
29.10.2021, 20:35
внизу ссылку посмотри. уже решал эту задачу.
0
0 / 0 / 0
Регистрация: 23.10.2020
Сообщений: 5
29.10.2021, 20:44  [ТС]
Я видел, что решали эту задачу, но у меня просьба не решить ее, а помочь с оптимизацией, решение которое я приложил полностью рабочее.
0
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
30.10.2021, 00:03
Поиск в сломанном массиве
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.10.2021, 00:03
Помогаю со студенческими работами здесь

Поиск в сломанном массиве
Формат ввода Функция принимает массив натуральных чисел и искомое число k. Длина массива не превосходит 10000. Элементы массива и число k...

Поиск в сломанном массиве
Помогите укоротить решение, с помощью цикла, и избавиться от некоторых if-ов пожалуста. Моя голова смогла выдать только такое решение...

Максимум на сломанном калькуляторе
Максимум на сломанном калькуляторе Петя Торопыжкин познакомился с гипотезой Коллатца: какое бы натуральное число a0 ни взять,...

Максимум на сломанном калькуляторе Pyhon
Петя Торопыжкин познакомился с гипотезой Коллатца: какое бы натуральное число a0 ни взять, последовательность (часто называемая сиракузской...

Восстановить пароли на сломанном ноутбуке
Добрый день. если не в тот раздел пишу свой вопрос, то переадресуйте куда лучше написать пожалуйста. сломался ноутбук. материнская...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru