Поиск первой позиции, где число больше или равно
Дан отсортированный массив целых чисел nums
и целое число target
. Напишите функцию, которая находит индекс первой позиции в массиве, где значение элемента больше или равно target
. Если такого элемента нет, функция должна вернуть -1
.
Вход: nums = [1, 2, 4, 4, 5, 6, 8, 10]
, target = 4
Выход: 2
Объяснение: Первая позиция, где значение больше или равно 4
, находится на индексе 2
. Это число 4
.
Вход: nums = [1, 3, 5, 7, 9, 11]
, target = 6
Выход: 4
Объяснение: Первая позиция, где значение больше или равно 6
, находится на индексе 4
. Это число 9
.
Вход: nums = [1, 3, 5, 7, 9, 11]
, target = 12
Выход: -1
Объяснение: В массиве нет элементов, которые больше или равны 12
.
fun findFirstGreaterOrEqual(nums: IntArray, target: Int): Int {
var left = 0
var right = nums.size - 1
var result = -1
while (left <= right) {
val mid = left + (right - left) / 2
if (nums[mid] >= target) {
result = mid
right = mid - 1
} else {
left = mid + 1
}
}
return result
}