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:
trueExplanation:
Последний символ — однобитовый символ "0".
Input:
[1, 1, 1, 0]Output:
falseExplanation:
Последний символ — часть двухбитового символа "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), так как не используется дополнительная память.