'''
#弱智解法一:
class Solution:
def search(self, nums, target):
for i,num in enumerate(nums):
if num == target:
return i
return -1
'''
#减少O(n)时间复杂度方法,二分法查找,因为输入数组为升序排列
#由于要求的为target部分的指针,因此需要保持数组不变,否则指针会发生变化;只移动指针即可
#有点类似快速排序法
class Solution:
def search(self, nums, target):
low, high = 0, len(nums) - 1
#while True:
while low<=high:
mid = (high - low) // 2 + low
if target > nums[mid]:
low = mid+1
elif target < nums[mid]:
high = mid-1
else:
# target == nums[mid]
return mid
return -1
if __name__=='__main__':
nums = [-1, 0, 3, 5, 9, 12]
target = 3
a=Solution()
print(a.search(nums,target))
【leetcode系列】小菜鸡的leetcode第7题:二分查找
最新推荐文章于 2024-05-20 21:56:33 发布