1365. Сколько чисел меньше текущего числа (Easy) (https://leetcode.com/problems/how-many-numbers-are-smaller-than-the-current-number)
Дан массив nums, для каждого nums[i] найдите, сколько чисел в массиве меньше него. То есть для каждого nums[i] нужно посчитать количество допустимых j, таких что j != i и nums[j] < nums[i]. Верните ответ в виде массива. Ограничения: - 2 <= nums.length <= 500 - 0 <= nums[i] <= 100
function smallerNumbersThanCurrent(nums: number[]): number[] {
const sorted = [...nums].sort((a, b) => a - b)
const firstIndex = new Map<number, number>()
for (let i = 0; i < sorted.length; i++) {
if (!firstIndex.has(sorted[i])) {
firstIndex.set(sorted[i], i)
}
}
return nums.map((n) => firstIndex.get(n)!)
}
// Локальная проверка:
console.log(smallerNumbersThanCurrent([8, 1, 2, 2, 3]))
console.log(smallerNumbersThanCurrent([6, 5, 4, 8]))
console.log(smallerNumbersThanCurrent([7, 7, 7, 7]))Пример 1:
Вход: nums = [8,1,2,2,3]
Выход: [4,0,1,1,3]
Пояснение:
Для nums[0]=8 существует четыре числа меньше него (1, 2, 2 и 3).
Для nums[1]=1 не существует ни одного числа меньше него.
Для nums[2]=2 существует одно число меньше него (1).
Для nums[3]=2 существует одно число меньше него (1).
Для nums[4]=3 существует три числа меньше него (1, 2 и 2).
Пример 2:
Вход: nums = [6,5,4,8]
Выход: [2,1,0,3]
Пример 3:
Вход: nums = [7,7,7,7]
Выход: [0,0,0,0]