https://leetcode.com/problems/convert-integer-to-the-sum-of-two-no-zero-integers/description/ Easy

Условие

Дано целое число n. Найди два положительных числа a и b, таких что:

a + b == n

a и b не содержат цифру 0. Верни массив [a, b]. Гарантируется, что ответ существует.

Примеры

Input: n = 2 Output: [1, 1] Explanation: 1 + 1 = 2, ни одно число не содержит нулей.

Input: n = 11 Output: [2, 9] Explanation: 2 + 9 = 11, оба числа не содержат нулей.

Решение

fun getNoZeroIntegers(n: Int): IntArray {
    // Перебираем a от 1 до n - 1
    for (a in 1 until n) {
        val b = n - a
        // Проверяем, что и a, и b не содержат ноль
        if (!a.toString().contains('0') && !b.toString().contains('0')) {
            return intArrayOf(a, b)
        }
    }
    // Ответ гарантирован, сюда не дойдём
    return intArrayOf()
}

Временная сложность

O(n * d), где d — количество цифр в числе (для проверки на наличие нулей).

Пространственная сложность

O(1), используется фиксированное количество дополнительной памяти.