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

2021-03-03 22:28

阅读:380

标签:tco   最大   存在   次数   解决   下标   elf   整数   数组   

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

Difficulty: 中等

给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。

如果数组中不存在目标值 target,返回 [-1, -1]

进阶:

  • 你可以设计并实现时间复杂度为 O(log n) 的算法解决此问题吗?

示例 1:

输入:nums = [5,7,7,8,8,10], target = 8
输出:[3,4]

示例 2:

输入:nums = [5,7,7,8,8,10], target = 6
输出:[-1,-1]

示例 3:

输入:nums = [], target = 0
输出:[-1,-1]

提示:

  • 0 5
  • -109 9
  • nums 是一个非递减数组
  • -109 9

Solution

解法一:很容易想到的思路,比较简单,遍历一次数组找到所有等于target的元素的下标索引然后找到对应最大最小的索引。需要注意的是数组所有的元素都相等的特殊情况。

class Solution:
    def searchRange(self, nums: List[int], target: int) -> List[int]:
        if not nums:
            return [-1,-1]
        
        res = []
        for i, v in enumerate(nums):
            if v == target:
                res.append(i)
        if not res:
            return [-1,-1]
        elif len(res) == 1:
            return [res[0],res[0]]
        else:
            return [min(res), max(res)]

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

标签:tco   最大   存在   次数   解决   下标   elf   整数   数组   

原文地址:https://www.cnblogs.com/swordspoet/p/14381248.html


评论


亲,登录后才可以留言!