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

Posted 亓官劼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python描述 LeetCode 2089. 找出数组排序后的目标下标相关的知识,希望对你有一定的参考价值。

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

  大家好,我是亓官劼(qí guān jié ),在【亓官劼】公众号、CSDN、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描述一

排序后一次遍历,找到连续的target

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 res

        

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)]

        

以上是关于Python描述 LeetCode 2089. 找出数组排序后的目标下标的主要内容,如果未能解决你的问题,请参考以下文章

不要62 HDU2089

杭电 2089 ( 不要62 )

HDU 2089 数位dp入门

HUD 2089 位数dp

Python描述 LeetCode 515. 在每个树行中找最大值

Python描述 LeetCode 515. 在每个树行中找最大值