题解 | #二分查找-II#
二分查找-II
http://www.nowcoder.com/practice/4f470d1d3b734f8aaf2afb014185b395
容易漏掉的步骤:
在start和end相等退出while循环后,必须判断判断当前start或者end指针所指示的值是否等于target
if nums[start]==target:
return start#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 如果目标值存在返回下标,否则返回 -1
# @param nums int整型一维数组
# @param target int整型
# @return int整型
#
class Solution:
def search(self , nums , target ):
# write code here
start = 0
end = len(nums)-1
if end<0: return -1
while start!=end:
m = int((start + end)/2)
if nums[m]==target:
while m>=0 and nums[m]==target:
m-=1
return m+1
elif nums[m]<target:
start = m+1
elif nums[m] > target:
end = m -1
if nums[start]==target:
return start
return -1
查看13道真题和解析