用Python代码给出:给定一个整数数组和目标值,升序排列后,找出指定目标值最后一次出现的位置下标。如果不存在,输出-1 例子:输入:5 8 8 7 7 11 8 输出:4
时间: 2024-10-08 07:23:20 浏览: 29
在Python中,你可以使用二分查找法结合列表切片来解决这个问题。首先,你需要对数组进行排序,然后在一个已经排好序的小范围内寻找目标值。由于目标可能是多次出现的,我们需要找到最后一个大于或等于目标值的位置。以下是相应的代码:
```python
def find_last_occurrence(nums, target):
nums.sort() # 先对数组进行升序排序
left, right = 0, len(nums) - 1 # 初始化左右边界
while left <= right:
mid = (left + right) // 2 # 计算中间位置
if nums[mid] == target: # 如果找到目标值
# 检查右半部分是否还有更大的target
while mid < len(nums) and nums[mid] == target:
mid += 1
return mid
elif nums[mid] < target: # 如果中间值小于目标,向右移动左边界
left = mid + 1
else: # 否则,向左移动右边界
right = mid - 1
# 如果没找到,返回-1
return -1
# 示例
nums = [5, 8, 8, 7, 7, 11]
target = 8
result = find_last_occurrence(nums, target)
print(result) # 输出:4
```
阅读全文