All Downloads are FREE. Search and download functionalities are using the official Maven repository.

g1001_1100.s1009_complement_of_base_10_integer.Solution Maven / Gradle / Ivy

There is a newer version: 1.38
Show newest version
package g1001_1100.s1009_complement_of_base_10_integer;

// #Easy #Bit_Manipulation #Udemy_Bit_Manipulation
// #2022_02_21_Time_1_ms_(41.56%)_Space_41.5_MB_(5.09%)

import java.util.ArrayList;
import java.util.List;

/**
 * 1009 - Complement of Base 10 Integer\.
 *
 * Easy
 *
 * 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.
 *
 * **Constraints:**
 *
 * *   0 <= n < 109
 *
 * **Note:** This question is the same as 476: [https://leetcode.com/problems/number-complement/](https://leetcode.com/problems/number-complement/)
**/
public class Solution {
    public int bitwiseComplement(int n) {
        if (n == 0) {
            return 1;
        }
        List list = new ArrayList<>();
        while (n != 0) {
            list.add(n & 1);
            n >>= 1;
        }
        int result = 0;
        int exp = list.size() - 1;
        for (int i = list.size() - 1; i >= 0; i--) {
            if (list.get(i) == 0) {
                result += Math.pow(2, exp);
            }
            exp--;
        }
        return result;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy