LeetCode Problem Number: 1009

Complement of Base 10 Integer

Solve on LeetCode

Problem Description

The complement of an integer is the integer you get when you flip all the 0's to 1's and all the 1's to 0's in its binary representation.

For example, the integer 5 is "101" in binary and its complement is "010", which is the integer 2.

Given an integer n, return its complement.


Example 1:

Input: n = 5
Output: 2
Explanation: 5 is "101" in binary, with complement "010" in binary, which is 2 in base-10.

Example 2:

Input: n = 7
Output: 0
Explanation: 7 is "111" in binary, with complement "000" in binary, which is 0 in base-10.

Example 3:

Input: n = 10
Output: 5
Explanation: 10 is "1010" in binary, with complement "0101" in binary, which is 5 in base-10.

Solution Code


class Solution {
public:
    int bitwiseComplement(int n) {
        int org = n;
        vector arr1, arr2;
        if(n == 0) return 1;
        while(org > 0){
            arr1.push_back(org & 1);
            org >>= 1;
        }
        for(int i = 0 ; i < arr1.size() ; i++){
            if(arr1[i] == 0) arr2.push_back(1);
            else arr2.push_back(0);
        }
        //101
        int power = 1;
        int ans = 0;
        for(int i = 0 ; i < arr2.size() ; i++){
            ans += power * arr2[i];
            power = power * 2;
        }

        return ans;
    }
};
                    

Solution Explanation

The problem involves finding the complement of a given integer. The solution follows these steps:

  • Convert to Binary: Convert the integer to its binary representation by extracting each bit.
  • Compute Complement: Flip all the bits from 0 to 1 and 1 to 0.
  • Convert Back to Integer: Convert the binary complement back to an integer to get the result.