Дано: отсортированный массив целых чисел и целочисленное значение target, верните индекс target. Если target нету в списке , верните индекс, в котором он находилась бы.
Примечание: алгоритм должен иметь сложностью O(log n). Пример :
Вход: nums = [1,3,5,6], target = 5
Выход: 2 Ограничения:
1 <= nums.length <= 104
-104 <= nums[i] <= 104
nums содержит целые значения, отсортированные по возрастанию.
-104 <= target <= 104 Без ограничения O(log n) можно решить задачу простым перебором списка. def searchInsert(nums: List[int], target: int) -> int:
if not nums:
return 0
for i, num in enumerate(nums):
if num >= target:
return i
return len(nums) Но тут сложность O(n) так, что не подходит. Решение(Python): 1) Бинарный поиск: def searchInsert(nums: List[int], target: int) -> int:
min = 0
max = len(nums)
while min < max:
m = (min + max) // 2
if nums[m] == target:
return m
if nums[m] < target:
min =