Skip to main content

Command Palette

Search for a command to run...

Solving Leetcode Interviews in Seconds with AI: Number of 1 Bits

Updated
3 min read

Introduction

In this blog post, we will explore how to solve the LeetCode problem "191" using AI. LeetCode is a popular platform for preparing for coding interviews, and with the help of AI tools like Chatmagic, we can generate solutions quickly and efficiently - helping you pass the interviews and get the job offer without having to study for months.

Problem Statement

Given a positive integer n, write a function that returns the number of set bits in its binary representation (also known as the Hamming weight). Example 1: Input: n = 11 Output: 3 Explanation: The input binary string 1011 has a total of three set bits. Example 2: Input: n = 128 Output: 1 Explanation: The input binary string 10000000 has a total of one set bit. Example 3: Input: n = 2147483645 Output: 30 Explanation: The input binary string 1111111111111111111111111111101 has a total of thirty set bits. Constraints: 1 <= n <= 231 - 1 Follow up: If this function is called many times, how would you optimize it?

Explanation

Here's the breakdown of the solution:

  • Bit Manipulation: The core idea is to efficiently clear the least significant set bit in each iteration. This is done using the bitwise AND operation of n with n-1. n & (n - 1) clears the rightmost set bit.
  • Iterative Counting: We iterate until n becomes zero. In each iteration, we clear the least significant set bit and increment a counter.
  • Optimization (Follow Up): For repeated calls with the same inputs, we can use memoization (caching) to store the results of previous calculations.

  • Time and Space Complexity: O(log n) runtime, where n is the input number, because in the worst case we iterate as many times as there are bits in 'n'. O(1) storage complexity, excluding the memoization optimization, since we're only using a constant amount of extra space. Memoization would add O(k) storage, where k is the number of unique inputs cached.

Code

    def count_set_bits(n: int) -> int:
    """
    Counts the number of set bits (1s) in the binary representation of a positive integer.

    Args:
        n: A positive integer.

    Returns:
        The number of set bits in the binary representation of n.
    """

    count = 0
    while n > 0:
        n &= (n - 1)  # Clear the least significant set bit
        count += 1
    return count

# Optimized version with memoization
_memo = {}  # Cache to store results

def count_set_bits_optimized(n: int) -> int:
    """
    Counts set bits using memoization for potential repeated calls.
    """
    if n in _memo:
        return _memo[n]

    count = 0
    temp_n = n
    while temp_n > 0:
        temp_n &= (temp_n - 1)
        count += 1
    _memo[n] = count
    return count

More from this blog

C

Chatmagic blog

2894 posts