版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。
版权
Leetcode专栏收录该内容
767 篇文章13 订阅
订阅专栏
给定一个升序整数数组,写一个函数搜索nums中数字target。如果target存在,返回它的下标,否则返回-1。注意,这个数组的大小是未知的。你只可以通过ArrayReader接口访问这个数组,ArrayReader.get(k)返回数组中第k个元素(下标从 0 开始)。
你可以认为数组中所有的整数都小于10000。如果你访问数组越界,ArrayReader.get会返回2147483647。
样例 1:
输入:array= [-1,0,3,5,9,12],target= 9输出:4解释:9 存在在 nums 中,下标为 4
样例 2:
输入:array= [-1,0,3,5,9,12],target= 2输出:-1解释:2 不在数组中所以返回 -1
注释 :
你可以认为数组中所有元素的值互不相同。数组元素的值域是[-9999, 9999]。
思路:
暴力的线性搜索就可以过。
class Solution(object): def search(self, reader, target): """ :type reader: ArrayReader :type target: int :rtype: int """ i = 0 tmp = reader.get(i) if tmp > target: #target比第一个元素都小,所以不存在 return -1 while tmp != 2147483647: if tmp == target: #找到了 return i if tmp > target: #后面的元素都比target大,找不到 break i += 1 tmp = reader.get(i) return -1