天天看点

Python描述 LeetCode 2089. 找出数组排序后的目标下标

Python描述 LeetCode 2089. 找出数组排序后的目标下标

  大家好,我是亓官劼(qí guān jié ),在【亓官劼】公众号、GitHub、B站等平台分享一些技术博文,主要包括前端开发、python后端开发、小程序开发、数据结构与算法、docker、Linux常用运维、NLP等相关技术博文,时光荏苒,未来可期,加油~

  如果喜欢博主的文章可以关注博主的个人公众号【亓官劼】(qí guān jié),里面的文章更全更新更快。如果有需要找博主的话可以在公众号后台留言,我会尽快回复消息.

本文原创为【亓官劼】(qí guān jié ),请大家支持原创,部分平台一直在恶意盗取博主的文章!!! 全部文章请关注微信公众号【亓官劼】。

题目

给你一个下标从 0 开始的整数数组 ​

​nums​

​​ 以及一个目标元素 ​

​target​

​ 。

目标下标 是一个满足 ​

​nums[i] == target​

​​ 的下标 ​

​i​

​ 。

将 ​

​nums​

​ 按 非递减 顺序排序后,返回由 ​

​nums​

​ 中目标下标组成的列表。如果不存在目标下标,返回一个 空 列表。返回的列表必须按 递增 顺序排列。

示例 1:

输入:nums = [1,2,5,2,3], target = 2
输出:[1,2]
解释:排序后,nums 变为 [1,2,2,3,5] 。
满足 nums[i] == 2 的下标是 1 和 2 。      

示例 2:

输入:nums = [1,2,5,2,3], target = 3
输出:[3]
解释:排序后,nums 变为 [1,2,2,3,5] 。
满足 nums[i] == 3 的下标是 3 。      

示例 3:

输入:nums = [1,2,5,2,3], target = 5
输出:[4]
解释:排序后,nums 变为 [1,2,2,3,5] 。
满足 nums[i] == 5 的下标是 4 。      

示例 4:

输入:nums = [1,2,5,2,3], target = 4
输出:[]
解释:nums 中不含值为 4 的元素。      

提示:

  • ​1 <= nums.length <= 100​

  • ​1 <= nums[i], target <= 100​

Python描述一

class Solution:
    def targetIndices(self, nums: List[int], target: int) -> List[int]:
        nums.sort()
        res = []
        flag = False
        for idx,item in enumerate(nums):
            if item == target:
                flag = True
                res.append(idx)
            if flag and item != target:
                break
        return      

Python描述二

class Solution:
    def targetIndices(self, nums: List[int], target: int) -> List[int]:
        nums.sort()
        left,right = 0,0
        l, r = 0, len(nums)-1
        while l < r:
            mid = l + r >> 1
            if nums[mid] >= target:
                r = mid
            else:
                l = mid + 1
        left = l if nums[l] == target else -1
        l, r = 0, len(nums)-1
        while l < r:
            mid = l + r + 1 >> 1
            if nums[mid] <= target:
                l = mid
            else:
                r = mid -  1
        right = l if nums[l] == target else -2
        return [_ for _ in range(left,right+1)]