How Many Numbers Are Smaller Than the Current Number
https://leetcode.com/problems/how-many-numbers-are-smaller-than-the-current-number/description/ | Easy |
Условие
Дан массив чисел nums. Для каждого элемента массива, определите, сколько чисел меньше этого элемента.
Примеры
Input:
nums = [8, 1, 2, 2, 3]Output:
[4, 0, 1, 1, 3]Explanation:
В этом примере: Для 8: 4 числа меньше 8. Для 1: 0 чисел меньше 1. Для 2: 1 число меньше 2. Для 3: 3 числа меньше 3.
Input:
nums = [6, 5, 4, 8]Output:
[2, 1, 0, 3]
Input:
nums = [7, 7, 7, 7]Output:
[0, 0, 0, 0]
Решение
fun smallerNumbersThanCurrent(nums: IntArray): IntArray {
// Создаем массив для хранения результата, который будет содержать количество элементов,
// меньших текущего элемента для каждого индекса
val result = IntArray(nums.size)
// Проходим по каждому элементу массива nums
for (i in nums.indices) {
var count = 0 // Переменная для подсчета элементов, меньших текущего элемента
// Сравниваем текущий элемент nums[i] с остальными элементами массива
for (j in nums.indices) {
// Если элемент nums[j] меньше чем nums[i] и индексы не совпадают
if (i != j && nums[j] < nums[i]) {
count++ // Увеличиваем счётчик
}
}
// Записываем количество элементов, меньших текущего, в результат на соответствующую позицию
result[i] = count
}
// Возвращаем массив с результатами
return result
}
Временная сложность
O(n^2) из-за двойного цикла для сравнения элементов.
Пространственная сложность
O(n) для хранения результатов в дополнительном массиве.