题目:假设一个单调递增的数组里的每个元素都是整数并且是唯一的。请找出数组中任意一个数值等于其下标的元素。
def get_num_same_index(nums):
if len(nums)<1:
return -1
begin,end = 0,len(nums)-1
while begin<end:
mid = (begin+end)//2
if nums[mid] == mid:
return nums[mid]
elif nums[mid]<mid:
begin = mid+1
elif nums[mid]>mid:
end = mid-1
return -1
注:使用二分查找,当中间的数和索引相同时,返回值,结束;当中间值小于索引时,begin指向中间值+1;当中间值大于索引时,end指向中间值-1。