https://leetcode.com/problems/duplicate-zeros Easy

Решение

fun duplicateZeros(arr: IntArray) {
    var zeros = 0
    val n = arr.size

    // Считаем количество нулей, которые поместятся после дублирования
    for (num in arr) {
        if (num == 0) zeros++
    }

    var i = n - 1
    var j = n + zeros - 1

    // Идем с конца, расставляем числа и дублируем нули
    while (i < j) {
        if (j < n) arr[j] = arr[i]  // Копируем число на новую позицию

        if (arr[i] == 0) {
            j--
            if (j < n) arr[j] = 0  // Дублируем ноль
        }
        i--
        j--
    }
}