题目地址:
https://leetcode.com/problems/complement-of-base-10-integer/
给定一个非负整数 n n n,将其从最高位的 1 1 1开始按位取反,返回答案。如果 n = 0 n=0 n=0则返回 1 1 1。
代码如下:
public class Solution {
public int bitwiseComplement(int N) {
if (N == 0) {
return 1;
}
int res = 0;
for (int i = 0; N != 0 ; i++) {
if ((N & 1) == 0) {
res += 1 << i;
}
N >>= 1;
}
return res;
}
}
时间复杂度 O ( log n ) O(\log n) O(logn),空间 O ( 1 ) O(1) O(1)。