题目
代码部分一(1ms 97.10%)
class Solution {
public int bitwiseComplement(int N) {
int res = 0;
int mask = 1;
int tmp = N;
for(int i = 0; i < 32; i++){
if((N & mask) == 0) res += mask;
mask <<= 1;
tmp >>= 1;
if(tmp == 0) break;
}
return res;
}
}
代码部分二(2ms 35.12%)
class Solution {
public int bitwiseComplement(int N) {
if(N == 0) return 1;
List<Integer> list = new ArrayList();
int res = 0;
while(N > 0){
int tmp = N % 2;
list.add(tmp);
N = N / 2;
}
int len = list.size() - 1 ;
for(; len >= 0; len--){
int tmp = list.get(len);
tmp = tmp == 1 ? 0 : 1;
res = res * 2 + tmp;
}
return res;
}
}