题目描述
给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。
示例 1:
示例 2:
提示:
- 你可以假设 nums 中的所有元素是不重复的。
- n 将在 [1, 10000]之间。
- nums 的每个元素都将在 [-9999, 9999]之间。
题目解析
二分搜索的基本形式,不过并不实用,比如 target 重复出现多次,本算法得出的索引位置是不确定的。
- 更常见的二分搜索形式是搜索左侧边界和右侧边界,即对于 target 重复出现多次的情景,计算 target 的最小索引和最大索引。
参考代码
以下为 Java 代码。
复杂度分析
- 时间复杂度:O(logn),其中 n 是数组的长度。
- 空间复杂度:O(1)。

