Menu
CoddyTech

Binary Search

简单二分查找python iconjava iconcpp iconc iconjs icon+10

你会得到一个按升序排列且没有重复值的整数列表 nums,以及一个整数 target。返回 target 在 nums 中的索引,从 0 开始计数;如果它不在列表中,则返回 -1。目标是将时间复杂度控制在 O(log n),这意味着你不能逐个查看所有元素。

函数

search(nums: integer-array, target: integer) → integer
numsinteger-array
已排序的不重复整数列表
targetinteger
要查找的值
返回值integer
nums 中 target 的索引,如果不存在则为 -1

约束条件

  • 1 ≤ nums.length ≤ 104
  • -104 ≤ nums[i], target ≤ 104
  • nums 按严格递增顺序排列,因此每个值只出现一次。

示例

输入
nums = [-7, -2, 0, 4, 9, 15, 23]target = 9
输出
4
解释
nums[4] 是 9。搜索会先查看索引 3(值为 4,太小),然后查看索引 5(值为 15,太大),接着查看索引 4,并在那里找到 9。
challenge icon

进阶

如果 nums 中的值可能重复,如何仍在 O(log n) 时间内返回 target 第一次出现的索引?

重置代码
def search(nums, target):
    # 在这里编写代码

测试 #1

测试 #2

参数

nums = [-7, -2, 0, 4, 9, 15, 23]
target = 9

预期输出

4