Blind 75 — Вопросы по программированию и техническому интервью — серия объяснений

Проблема:

Объяснение:

Это, конечно, бинарные вопросы, поэтому понимание побитовых операций и их значения имеет первостепенное значение. Это отличные простые вопросы, чтобы познакомиться с бинарным литкодом. Интуиция здесь такова, что вы хотите отслеживать единичные биты, а затем выполнять побитовые операции с этим числом, пока оно не равно 0. Внутри этого цикла мы сначала можем проверить, равен ли первый бит 0 или 1. Есть два способа сделайте это, если (n & 1) == 1 или если n % 2 == 1. Если это утверждение верно, то бит равен единице, и мы увеличиваем счетчик. Поскольку мы проверяем только первый бит в числе, мы сдвигаем биты вправо на 1.

Решение — O(n):

class Solution:
 def hammingWeight(self, n: int) -> int:
  count = 0
 
  while n != 0:
   if (n & 1) == 1:
    count += 1
 
   n = n >> 1
 
  return count

Информация:

Веб-сайт: nkwade.dev
LinkedIn: linkedin.com/in/nkwade
GitHub: github.com/nkwade
Электронная почта: [email protected]