题目详情:
给你一个下标从 0 开始的整数数组 nums 以及一个目标元素 target 。
目标下标 是一个满足 nums[i] == target 的下标 i 。
将 nums 按 非递减 顺序排序后,返回由 nums 中目标下标组成的列表。如果不存在目标下标,返回一个 空 列表。返回的列表必须按 递增 顺序排列。
示例:
输入:nums = [1,2,5,2,3], target = 2
输出:[1,2]
解释:排序后,nums 变为 [1,2,2,3,5] 。
满足 nums[i] == 2 的下标是 1 和 2 。
解题思路:
首先可以对nums进行递增排序得到indexedNums。
然后,遍历排序后的映射数组 indexedNums ,如果值与目标元素相等,则将索引加入到 sortedIndices 列表中。
最终返回 sortedIndices 列表即为满足条件的索引列表,按照递增顺序排列。
代码实现:
function searchTargetIndex(nums, target) {
const sortedIndices = [];
// 构建索引与值的映射数组
const indexedNums = nums.sort((a, b) => a - b);
// 遍历排序后的映射数组,记录满足条件的索引
for (let index = 0; index < indexedNums.length; index++) {
const element = indexedNums[index];
if (element === target) {
sortedIndices.push(index);
}
}
return sortedIndices;
}
// 示例输入
const nums = [48, 90, 9, 21, 31, 35, 19, 69, 29, 52, 100, 54, 21, 86, 6, 45, 42, 5, 62, 77, 15, 38];
const target = 6;
// 调用函数并输出结果
console.log(searchTargetIndex(nums, target));