题解 | #【模板】二分查找、堆#
【模板】堆
https://www.nowcoder.com/practice/13f61c8c92404f5ea5d6fa4c692869fb
二分查找
class Solution:
# 二分查找, 必须是升序数组。
def search(self , nums: List[int], target: int) -> int:
# write code here
l = 0
r = len(nums) - 1
# 从数组首尾开始, 直到两者相遇
while l <= r:
# 求中间值
tgt_ind = l +int((r-l)/2)
# 检查中间值是否等于目标值
if nums[tgt_ind] == target:
return tgt_ind
# 中间值大于目标值, 表示在左区间
if nums[tgt_ind] > target:
r = tgt_ind - 1
else: # 中间值小于于目标值, 表示在右区间
l = tgt_ind + 1
return -1
查看3道真题和解析