Number of 1 Bits

https://leetcode.com/problems/number-of-1-bitsEasy

Условие

Дано 32-битное беззнаковое целое число n, нужно вернуть количество единичных битов в его двоичной записи. Это также называется Hamming Weight.

Примеры

Input: n = 11

Output: 3

Explanation: В двоичной записи числа 00000000000000000000000000001011 три единичных бита.
Input: n = 128

Output: 1

Explanation: В двоичной записи числа 00000000000000000000000010000000 один единичный бит.
Input: n = 2147483645

Output: 30

Explanation: В двоичной записи числа 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), так как используется константное количество дополнительной памяти.