您的位置:首页 > 编程语言 > Python开发

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

2017-08-02 15:31 531 查看
题目:在一个排序数组中找一个数,返回该数出现的任意位置,如果不存在,返回-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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: