Move Zeroes
https://leetcode.com/problems/move-zeroes | Easy |
Условие
Дан массив nums, переместите все нулевые элементы в конец, сохраняя относительный порядок ненулевых элементов.
Примеры
Input:
nums = [0, 1, 0, 3, 12]Output:
[1, 3, 12, 0, 0]
Input:
nums = [0]Output:
[0]
Решение
fun moveZeroes(nums: IntArray) {
var lastNonZeroIndex = 0 // Индекс последнего ненулевого элемента
// Перемещаем ненулевые элементы в начало массива
for (i in nums.indices) {
if (nums[i] != 0) {
nums[lastNonZeroIndex] = nums[i] // Перемещаем ненулевое значение
lastNonZeroIndex++ // Увеличиваем индекс последнего ненулевого элемента
}
}
// Заполняем оставшиеся элементы нулями
for (i in lastNonZeroIndex until nums.size) {
nums[i] = 0
}
}
Временная сложность
O(n), где n — количество элементов в массиве, так как мы проходим по массиву дважды.
Пространственная сложность
O(1), так как мы не используем дополнительную память, кроме нескольких переменных.