Reverse Bits
https://leetcode.com/problems/reverse-bits | Easy |
Условие
Дано 32-битное беззнаковое целое число n. Необходимо вернуть число, которое получается при переворачивании битов числа n.
Примеры
Input:
n = 00000010100101000001111010011100Output:
964176192 (00111001011110000010100101000000)Explanation:
Перевернутое значение для входного числа в двоичной форме.
Input:
n = 11111111111111111111111111111101Output:
3221225471 (10111111111111111111111111111111)Explanation:
Перевернутое значение для входного числа в двоичной форме.
Решение
fun reverseBits(n: Int): Int {
var result = 0
var num = n
// Проходим по всем 32 битам числа
for (i in 0 until 32) {
// Сдвигаем результат влево, чтобы освободить место для нового бита
result = result shl 1
// Добавляем младший бит числа num в результат
result = result or (num and 1)
// Сдвигаем число num вправо, чтобы обработать следующий бит
num = num ushr 1
}
return result // Возвращаем перевернутое число
}
Временная сложность
O(1), так как количество итераций всегда фиксировано и равно 32.
Пространственная сложность
O(1), так как используется константное количество дополнительной памяти.