
可以使用 二分查找 来实现这个功能,时间复杂度为 O(log n)。下面是 Python 代码:
def binary_search(nums, target):
left, right = 0, len(nums) - 1
while left <= right:
mid = (left + right) // 2
if nums[mid] == target:
return mid
elif nums[mid] < target:
left = mid + 1
else:
right = mid - 1
return -1
# 测试示例
nums = [-1, 0, 3, 5, 9, 12]
target = 9
print(binary_search(nums, target)) # 输出: 4
思路解析
-
设定两个指针
left和right,分别指向数组的起始和终止位置。 -
计算中间位置
mid,检查nums[mid]是否等于target:-
若相等,直接返回
mid。 -
若
nums[mid] < target,说明target在右半部分,调整left = mid + 1。 -
若
nums[mid] > target,说明target在左半部分,调整right = mid - 1。
-
-
继续循环,直到
left > right,如果未找到目标值,返回-1。
这种方法在 有序数组 中查找目标值,效率很高!🚀
422

被折叠的 条评论
为什么被折叠?



