1
.问题描述
给定一个排序的整数数组(升序)和一个要查找的目标整数
target
,查找到
target
第
1
次出现的下标(从
0
开始),如果
target
不存在于
数组中,返回
-1
。
2
.问题示例
输入数组
[1
,
4
,
4
,
5
,
7
,
7
,
8
,
9
,
9
,
10]
和目标整数
1
,输出其
所在的位置为
0
,即第
1
次出现在第
0
个位置。输入数组
[1
,
2
,
3
,
3
,
4
,
5
,
10]
和目标整数
3
,输出
2
,即第
1
次出现在第
2
个位置。输入数组
[1
,
2
,
3
,
3
,
4
,
5
,
10]
和目标整数
6
,输出
-1
,即没有出现过
6
,返
回
-1
。
3
.代码实现
class Solution:
def search(self, nums, target):
first = 0 #定义第一个元素下标和最后一个元素下标
last = len(nums) - 1
while first <= last: #左闭右闭区间
mid = (first + last) // 2 #中间元素的下标值
if nums[mid] < target:
first = mid + 1
elif nums[mid] > target:
last = mid - 1
else:
return mid
return -1
nums = [1,4,4,5,7,7,8,9,9,10]
s = Solution()
print(s.search(nums,10))
4
.运行结果
输入:
[1,4,4,5,7,7,8,9,9,10] 10
输出:
9
输入:
[1,4,4,5,7,7,8,9,9,10] 6
输出:
-1