Number of 1 Bits
https://leetcode.com/problems/number-of-1-bits | Easy |
Условие
Дано 32-битное беззнаковое целое число n, нужно вернуть количество единичных битов в его двоичной записи. Это также называется Hamming Weight.
Примеры
Input:
n = 11Output:
3Explanation:
В двоичной записи числа 00000000000000000000000000001011 три единичных бита.
Input:
n = 128Output:
1Explanation:
В двоичной записи числа 00000000000000000000000010000000 один единичный бит.
Input:
n = 2147483645Output:
30Explanation:
В двоичной записи числа 11111111111111111111111111111101 тридцать один единичный бит.
Решение
fun hammingWeight(n: Int): Int {
var count = 0
var num = n
// Проходим по каждому биту числа
while (num != 0) {
// Если младший бит равен 1, увеличиваем счетчик
count += num and 1
// Сдвигаем число вправо на 1 бит
num = num ushr 1
}
return count // Возвращаем количество единичных битов
}
Временная сложность
O(1), поскольку мы всегда проходим через фиксированные 32 бита.
Пространственная сложность
O(1), так как используется константное количество дополнительной памяти.