在 Python 中查找已排序数组中元素的第一个和最后一个位置
pythonserver side programmingprogramming更新于 2025/10/25 15:40:17
假设我们有一个整数数组 A。它按升序排序,我们必须找到给定目标值的起始和结束位置。当数组中未找到目标时,返回 [-1, -1]。因此,如果数组为 [2,2,2,3,4,4,4,4,5,5,6],且目标是 4,则输出将为 [4,7]
为了解决这个问题,我们将遵循以下步骤 −
- 最初 res := [-1,-1],设置 low := 0,high := 数组 A 的长度
- 当 low < high
- mid := low + (high – low)/2
- 如果 A[mid] 是目标,则
- high := mid, res[0] := mid 且 res[1] := mid
- 否则当 A[mid] < 目标时,则 low := mid + 1,否则 high := mid
- 如果 res[0] = -1,则返回 res
- low := res[0] + 1,high := nums 的长度
- 当 low < high
- mid := low + (high – low)/2
- 如果 A[mid] 是目标,则
- low := mid + 1, res[1] := mid
- 否则当 A[mid] < 目标时,则 low := mid + 1,否则 high := mid
- 返回 res
示例 (Python)
让我们看看下面的实现以便更好地理解 −
class Solution(object): def searchRange(self, nums, target): res = [-1,-1] low = 0 high = len(nums) while low<high: mid = int(low + (high-low)//2) if nums[mid] == target: high = mid res[0]=mid res[1]=mid elif nums[mid]<target: low = mid+1 else: high = mid if res[0] == -1: return res low = res[0]+1 high = len(nums) while low<high: mid = int(low + (high-low)//2) if nums[mid] == target: low = mid+1 res[1] = mid elif nums[mid] < target: low = mid + 1 else: high = mid return res ob1 = Solution() print(ob1.searchRange([2,2,2,3,3,4,4,4,4,5,5,6], 4))
输入
[2,2,2,3,4,4,4,4,5,5,6] 4
输出
[5, 8]
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

