LeetCode刷题之34.在排序数组中查找元素的第一个和最后一个位置

LeetCode刷题之34.在排序数组中查找元素的第一个和最后一个位置

我不知道将去向何方,但我已在路上!
时光匆匆,虽未曾谋面,却相遇于斯,实在是莫大的缘分,感谢您的到访 !
  • 题目
    给定一个按照升序排列的整数数组nums,和一个目标值target。找出给定目标值在数组中的开始位置和结束位置。你的算法时间复杂度必须是 O(log n) 级别。如果数组中不存在目标值,返回 [-1, -1]。
  • 示例
示例1:
输入: nums = [5,7,7,8,8,10], target = 8
输出: [3,4]
示例2:
输入: nums = [5,7,7,8,8,10], target = 6
输出: [-1,-1]
  • 代码:
class Solution:
    def searchRange(self, nums: List[int], target: int) -> List[int]:
        a,b = -1,-1
        for i in range(len(nums)):
            if nums[i] == target and a == -1:
                a,b = i,i
            if nums[i] == target:
                b = i
        return[a,b]
# 执行用时 :108 ms, 在所有 Python3 提交中击败了71.72%的用户
# 内存消耗 :15 MB, 在所有 Python3 提交中击败了5.30%的用户
  • 算法说明:
    初始化起始位置和结束位置为[-1,-1];然后遍历nums中的元素,遍历到第一个target的时候,判断起始位置是否是-1,如果是,将索引赋值给起始位置a,为了防止nums中只存在一个target的情况,将结束位置的值也赋值为当前位置,然后继续循环;遍历到第二个target的时候,第一个if的条件不成立,即起始位置的值不再变化,用第二个if更新结束位置的值,最后返回[a,b]即可。
发布了90 篇原创文章 · 获赞 1 · 访问量 1049

猜你喜欢

转载自blog.csdn.net/qq_34331113/article/details/102731558