Description
Find Target Indices After Sorting Array
EasyYou are given a 0-indexed integer array nums and a target element target.
A target index is an index i such that nums[i] == target.
Return a list of the target indices of nums after sorting nums in non-decreasing order. If there are no target indices, return an empty list. The returned list must be sorted in increasing order.
Example 1:
Input: nums = [1,2,5,2,3], target = 2 Output: [1,2] Explanation: After sorting, nums is [1,2,2,3,5]. The indices where nums[i] == 2 are 1 and 2.
Example 2:
Input: nums = [1,2,5,2,3], target = 3 Output: [3] Explanation: After sorting, nums is [1,2,2,3,5]. The index where nums[i] == 3 is 3.
Example 3:
Input: nums = [1,2,5,2,3], target = 5 Output: [4] Explanation: After sorting, nums is [1,2,2,3,5]. The index where nums[i] == 5 is 4.
Constraints:
1 <= nums.length <= 1001 <= nums[i], target <= 100
Solutions
This function finds where a target number would appear in a sorted version of the array. It first sorts nums in ascending order using nums.sort((a, b) => a - b) (the comparator is needed so JavaScript sorts numerically rather than alphabetically). Then it walks through the sorted array with a simple for loop, and every time an element equals target, it pushes that element's index into the res array. Since the array is sorted, all matching values sit next to each other, so the result is a contiguous list of indices (or an empty array if target never appears). The sort dominates the cost at O(n log n) time, and the function uses O(1) extra space beyond the output.
/**
* @param {number[]} nums
* @param {number} target
* @return {number[]}
*/
var targetIndices = function(nums, target) {
nums.sort((a, b) => a - b);
const res = [];
for (let i = 0; i < nums.length; i++) {
if (nums[i] === target) {
res.push(i);
}
}
return res;
};