LintCode python 小白-简单题-457经典二分查找问题

题目:在一个排序数组中找一个数,返回该数出现的任意位置,如果不存在,返回-1

样例
给出数组 [1, 2, 2, 4, 5, 5].
对于 target = 2, 返回 1 或者 2.
对于 target = 5, 返回 4 或者 5.
对于 target = 6, 返回 -1.

思路:就是一直将目标与A[mid]进行比较,直到目标=A[mid]

代码:

class Solution:
    # @param {int[]} A an integer array sorted in ascending order
    # @param {int} target an integer
    # @return {int} an integer
    def findPosition(self, A, target):
        # Write your code here
        if len(A)<1:
            return-1
        begin=0
        end=len(A)-1
        if target==A[0]:
            return begin
        if target==A[-1]:
            return end
        while begin<end:
            mid = begin + (end - begin)/2   #这里应该//2 不然mid会出现小数点,但是lintcode自动可以取整。
            if target==A[mid]:
                return mid
            elif target <A[ mid]:
                end=mid -1
            else:
                begin=mid+1
        return -1
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值