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

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

所以,如果输入像 nums = [1,5,6,6,8,9] target = 6,那么输出就会是 4,因为 6 已经在那里了,所以要插入它,最大可能的索引是 4 ,因此数组将类似于 [1,5,6,6,6,8,9]。

示例

让我们看看以下实现以获得更好的理解 -

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

猜你喜欢