Skip to main content

Command Palette

Search for a command to run...

Solving Leetcode Interviews in Seconds with AI: Sort Integers by The Number of 1 Bits

Updated
2 min read

Introduction

In this blog post, we will explore how to solve the LeetCode problem "1356" 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

You are given an integer array arr. Sort the integers in the array in ascending order by the number of 1's in their binary representation and in case of two or more integers have the same number of 1's you have to sort them in ascending order. Return the array after sorting it. Example 1: Input: arr = [0,1,2,3,4,5,6,7,8] Output: [0,1,2,4,8,3,5,6,7] Explantion: [0] is the only integer with 0 bits. [1,2,4,8] all have 1 bit. [3,5,6] have 2 bits. [7] has 3 bits. The sorted array by bits is [0,1,2,4,8,3,5,6,7] Example 2: Input: arr = [1024,512,256,128,64,32,16,8,4,2,1] Output: [1,2,4,8,16,32,64,128,256,512,1024] Explantion: All integers have 1 bit in the binary representation, you should just sort them in ascending order. Constraints: 1 <= arr.length <= 500 0 <= arr[i] <= 104

Explanation

  • Count 1s and Sort: The core idea is to associate each number in the input array with the count of 1s in its binary representation. We then sort the array based on these counts, and if counts are the same, we sort by the original number itself.
    • Efficient Bit Counting: Use bit manipulation for a fast count of set bits (1s) in each number's binary form.
    • Combined Sorting: Utilize Python's sorted function with a custom key to achieve the desired sorting order, first by the 1s count and then by the number's value.
  • Runtime Complexity: O(n log n), where n is the length of the input array, due to the sorting operation. Storage Complexity: O(n) in the worst case, due to the space used by the sorted function if it creates a copy.

Code

    def sort_by_bits(arr):
    """
    Sorts an array of integers by the number of 1s in their binary representation.

    Args:
        arr: A list of integers.

    Returns:
        A list of integers sorted by the number of 1s in their binary representation,
        and in case of ties, by the integer value itself.
    """

    def count_set_bits(n):
        """Counts the number of set bits (1s) in the binary representation of n."""
        count = 0
        while n > 0:
            n &= (n - 1)  # Clear the least significant set bit
            count += 1
        return count

    return sorted(arr, key=lambda x: (count_set_bits(x), x))

More from this blog

C

Chatmagic blog

2894 posts