题解 | #二分查找-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
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务