在Python中查找插入元素以保持列表排序的索引的程序

在Python中查找插入元素以保持列表排序的索引的程序

假设我们有一个名为nums的按升序排列的数字列表,我们还有另一个数字目标target,我们必须找到插入目标的索引以保持nums排序。如果目标已经存在于nums中,则返回可插入目标的最大索引。我们必须不使用库函数解决此问题,并在O(log n)时间内解决。

因此,如果输入是nums = [1,5,6,6,8,9] target = 6,则输出将为4,因为6已经存在,因此将其插入的最大可能索引为4,因此数组将为[1,5,6,6,6,8,9]。

为了解决这个问题,我们将遵循以下步骤 −

  • left := 0
  • right :=
  • size of nums – 1
  • ans := 0
  • while left <= right, do
    • mid := floor of (left + right) / 2
    • if target >= nums[mid], then
      • ans := mid + 1
      • left := mid + 1
    • otherwise,
      • right := mid – 1
  • return ans

示例

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

def solve(nums, target):
   left, right = 0, len(nums) - 1
   ans = 0
   while left <= right:
      mid = (left + right) // 2
      if target >= nums[mid]:
         ans = mid + 1
         left = mid + 1
      else:
         right = mid - 1
   return ans

nums = [1,5,6,6,8,9]
target = 6
print(solve(nums, target))

输入

[1,5,6,6,8,9], 6

输出

4

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程