Перемещение нулей в конец списка
Реализуйте функцию moveZeroesToEnd
, которая принимает на вход список целых чисел и перемещает все нули в конец списка, сохраняя порядок остальных элементов.
// Пример 1:
val input1 = mutableListOf(0, 1, 0, 3, 12)
moveZeroesToEnd(input1)
Assert.assertEquals(listOf(1, 3, 12, 0, 0), input1)
// Объяснение: Все нули перемещены в конец списка, порядок ненулевых элементов (1, 3, 12) сохранён.
// Пример 2:
val input2 = mutableListOf(0, 0, 1)
moveZeroesToEnd(input2)
Assert.assertEquals(listOf(1, 0, 0), input2)
// Объяснение: Один ненулевой элемент (1) перемещён в начало списка, нули перемещены в конец.
// Пример 3:
val input3 = mutableListOf(0, 0, 0)
moveZeroesToEnd(input3)
Assert.assertEquals(listOf(0, 0, 0), input3)
// Объяснение: В списке только нули, поэтому никаких изменений не требуется.
fun moveZeroesToEnd(nums: MutableList<Int>) {
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
}
}
lastNonZeroIndex
на нуле. Она будет указывать на место, куда следует переместить следующий ненулевой элемент.lastNonZeroIndex
, и увеличиваем значение этой переменной.