https://leetcode.com/problems/1-bit-and-2-bit-characters Easy

Условие

Дан массив целых чисел bits, состоящий из 0 и 1, который описывает последовательность символов. Есть два типа символов:

• Однобитовый символ представлен "0".

• Двухбитовый символ представлен "10" или "11".

Гарантируется, что массив всегда заканчивается 0. Верните true, если последний символ — однобитовый символ, и false в противном случае.

Примеры

Input: [1, 0, 0] Output: true Explanation: Последний символ — однобитовый символ "0".

Input: [1, 1, 1, 0] Output: false Explanation: Последний символ — часть двухбитового символа "10".

Решение

fun isOneBitCharacter(bits: IntArray): Boolean {
    var i = 0
    while (i < bits.size - 1) { // Проходим до предпоследнего элемента
        i += if (bits[i] == 1) 2 else 1 // Перемещаемся на 2 позиции для "1" и на 1 для "0"
    }
    return i == bits.size - 1 // Проверяем, что последняя позиция - это "0"
}

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

O(n), где n — длина массива.

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

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