# 有序数组中查找大于等于num的最右位置

我们有如下一个数组:

数组内的数字是有序的,我们假设不知道里面是数字情况,设计一个函数,指定数组及数字,该函数返回大于等于3最左边的位置,不存在返回-1

# 算法步骤

参考有序数组中查找小于等于num的最左位置,修改下边界条件即可

# 代码实现

# 方式一

采用边界为 left < right 的方式循环:

func BSNearRight(arr []int, num int) int {
	if arr == nil || len(arr) == 0 {
		return -1
	}
	left, right, mid, index := 0, len(arr)-1, 0, -1
	for left <= right { 
		mid = left + ((right - left) >> 1)
		if arr[mid] >= num {
            index = mid
            right = mid - 1
		} else {
			left = mid + 1
		}
	}
	return index
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

#

上次更新: 9/11/2023,