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