704. 二分查找
小黑代码
class Solution:
def search(self, nums: List[int], target: int) -> int:
# 数组长度
n = len(nums)
# 头尾指针
left = 0
right = n - 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
剑指 Offer 53 - I. 在排序数组中查找数字 I
小黑代码
class Solution:
def search(self, nums: List[int], target: int) -> int:
# 数组长度
n = len(nums)
# 初始化开始结束位置
start = -1
end = -1
# 开始查找
for i in range(n):
if nums[i] == target:
if start == -1:
start = i
end = i
if end != -1 and nums[end] != nums[i]:
break
return end - start + 1 if end != -1 else 0
小黑代码2
class Solution:
def search(self, nums: List[int], target: int) -> int:
# 二分查找函数
def bin_search(arr, is_lower):
# 数组长度
n = len(arr)
# 左右指针
left = 0
right = n - 1
# 记录目标值最后的位置
ans = -1
# 迭代
while left <= right:
mid = (left + right) // 2
if arr[mid] > target or (is_lower and arr[mid] == target):
right = mid - 1
else:
left = mid + 1
# 找到目标值记录位置
if arr[mid] == target:
ans = mid
return ans
start = bin_search(nums, True)
if start == -1:
return 0
end = bin_search(nums, False)
return end - start + 1
小黑生活
又获得了几张照片,小黑秒变主持人
快毕业了,这应该是最后几次了吧
晚餐牛肉面套餐
地铁上的阅读
小汤3第二课完成打卡
第一次使用手表,抛弃了一万多公里的握手机跑步姿势,非常不适应,但为了小黑身体的平衡发展,必须适应
早餐宇飞牛肉面
到公司后来杯星巴克咖啡