int lowerBound(int[] values, int target) {
int left = 0;
int right = values.length;
while (left < right) {
int mid = left + (right - left) / 2;
if (values[mid] < target) left = mid + 1;
else right = mid;
}
return left;
}
def lower_bound(values: list[int], target: int) -> int:
left, right = 0, len(values)
while left < right:
mid = left + (right - left) // 2
if values[mid] < target:
left = mid + 1
else:
right = mid
return left
def lowerBound(values: Array[Int], target: Int): Int =
var left = 0
var right = values.length
while left < right do
val mid = left + (right - left) / 2
if values(mid) < target then left = mid + 1
else right = mid
left
int lowerBound(const std::vector<int>& values, int target) {
int left = 0, right = values.size();
while (left < right) {
int mid = left + (right - left) / 2;
if (values[mid] < target) left = mid + 1;
else right = mid;
}
return left;
}