用于查找数组元素也与 Python 中的索引相同的最小索引的程序
假设我们有一个名为nums的元素列表,其中所有项目都是唯一的,并且它们按升序排序,我们必须找到最小值i使得nums[i]=i。如果我们找不到任何解决方案,则返回-1。我们必须在O(log(n))时间内解决这个问题。
因此,如果输入类似于nums=[-4,-1,2,3,8],那么输出将为2,因为nums[2]=2和nums[3]=3但2更小。
示例
让我们看下面的实现来更好地理解
def solve(nums): ret = -1 lhs = 0 rhs = len(nums) - 1 while lhs <= rhs: mid = (lhs + rhs) //2 if nums[mid] == mid: ret = mid if nums[mid] >= mid: rhs = mid - 1 else: lhs = mid + 1 return ret nums = [-4, -1, 2, 3, 8] print(solve(nums))
输入
[-4, -1, 2, 3, 8]输出结果
2