在右侧编辑器补充代码,用户先输入n,然后输入一个规模为n的有序数组,再输入目标值下,求出目标值x在该数组中第一次和最后一次出现的位置,如果x未出现在数组中,输出两个-1。
时间: 2024-05-25 13:16:35 浏览: 57
cpp代码-(一维数组)声明10个数组元素并输入元素,找出最大值及其下标
5星 · 资源好评率100%
n = int(input())
nums = list(map(int, input().split()))
target = int(input())
# 二分查找左边界
left = 0
right = n - 1
while left <= right:
mid = (left + right) // 2
if nums[mid] < target:
left = mid + 1
else:
right = mid - 1
if left >= n or nums[left] != target:
print(-1, -1)
else:
first_pos = left
# 二分查找右边界
left = first_pos
right = n - 1
while left <= right:
mid = (left + right) // 2
if nums[mid] > target:
right = mid - 1
else:
left = mid + 1
last_pos = right
print(first_pos, last_pos)
阅读全文