题解 | #二分查找-II python解法#

二分查找-II

http://www.nowcoder.com/practice/4f470d1d3b734f8aaf2afb014185b395

首先判断数组为空或数组长度为一的情况,然后用start和end,middle进行二分查找,若middle处的值=target,需要继续向前寻找,最终会出现start=end-1的情况,判断首尾后,跳出循环

#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 如果目标值存在返回下标,否则返回 -1
# @param nums int整型一维数组 
# @param target int整型 
# @return int整型
#
class Solution:
    def search(self , nums , target ):
        # write code here
        length = len(nums) #数组的长度
        if length == 0: #数组为空
            return -1
        elif length ==1: #数组长度为1
            return -1 if nums[0] != target else 0
        start = 0 #首
        end = length-1 #尾
        index = -1 #存储返回的索引
        while (True):
            middle = int((start+end)/2)
            value = nums[middle]
            if value == target: #若middle处遇到target,则赋值给index,并继续向前查找
                index = middle
                end = middle
            elif value>target:
                end = middle
            else:
                start = middle 
            if start == end -1: # 当start=end-1的情况,判断首尾后,跳出循环
                if nums[start] == target:
                    index = start
                    break
                if nums[end] == target:
                    index = end
                    break
                break 
        return index
全部评论

相关推荐

争当牛马还争不上
码农索隆:1.把简历改哈 2.猛投,狠投 3.把基础打牢 这样你在有机会的时候,才能抓住
点赞 评论 收藏
分享
06-13 10:15
门头沟学院 Java
想去夏威夷的大西瓜在...:我也是27届,但是我现在研一下了啥项目都没有呀咋办,哎,简历不知道咋写
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-03 16:22
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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