在Python中找到与数组元素相同的最小索引的程序

在Python中找到与数组元素相同的最小索引的程序

假设我们有一个名为nums的元素列表,其中所有项都是唯一的,并且按升序排序,我们必须找到最小的i,使得nums [i] = i。如果我们找不到任何解决方案,则返回-1。我们必须在O(log(n))时间内解决此问题。

因此,如果输入为nums =[ – 4,-1,2,3,8],则输出为2,因为nums [2] = 2且nums [3] = 3但2较小。

要解决此问题,请执行以下步骤−

  • ret:= -1,lhs:= 0,rhs:= nums的大小−1

  • while lhs <= rhs,do

    • mid:= (lhs + rhs)/ 2的地板

    • 如果nums [mid]与mid相同,则

      • ret:= mid
    • 如果nums [mid] ≥ mid,则
      • rhs:= mid – 1
    • 否则,
      • lhs:=中间+ 1
  • 返回ret

例子

让我们看一下以下实现,以更好地理解

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程