476. Number Complement

Given a positive integer, output its complement number. The complement strategy is to flip the bits of its binary representation.

Note:

1. The given integer is guaranteed to fit within the range of a 32-bit signed integer.
2. You could assume no leading zero bit in the integer’s binary representation.

Example 1:

``````Input: 5
Output: 2
Explanation: The binary representation of 5 is 101 (no leading zero bits), and its complement is 010. So you need to output 2.
``````

Example 2:

``````Input: 1
Output: 0
Explanation: The binary representation of 1 is 1 (no leading zero bits), and its complement is 0. So you need to output 0.
``````

``````class Solution {
public:
int findComplement(int num) {
bool start = false;
for (int i = 31; i >= 0; --i) {
if (num & (1 << i)) start = true;
if (start) num ^= (1 << i);
}
return num;
}
};
``````

``````class Solution {
public:
int findComplement(int num) {
}
};
``````

``````class Solution {
public:
int findComplement(int num) {
return (1 - num % 2) + 2 * (num <= 1 ? 0 : findComplement(num / 2));
}
};
``````

https://discuss.leetcode.com/topic/74627/3-line-c

https://discuss.leetcode.com/topic/74968/simple-java-one-line-solution

https://discuss.leetcode.com/topic/74642/java-1-line-bit-manipulation-solution

LeetCode All in One 题目讲解汇总(持续更新中…)

 微信打赏 Venmo 打赏
（欢迎加入博主的知识星球，博主将及时答疑解惑，并分享刷题经验与总结，试运营期间前五十位可享受半价优惠～）

×

Help us with donation