private int getCountOfOne(int x){
int result = 0;
while(x != 0){
x = (x - 1) & x;
result++;
}
return result;
}
例题:
有一个正整数,请找出其二进制表示中1的个数相同、且大小最接近的那两个数。(一个略大,一个略小)
给定正整数int x,请返回一个整型数组,代表所求的两个数(小的在前)。保证答案存在。
测试样例:2
返回:[1,4]
import java.util.*;
public class CloseNumber {
public int[] getCloseNumber(int x) {
int big = x+1, small = x-1;
while(getCountOfOne(x)!=getCountOfOne(big)){
big++;
}
while(getCountOfOne(x)!=getCountOfOne(small)){
small--;
}
int[] arr = {small,big};
return arr;// write code here
}
private int getCountOfOne(int x){
int result = 0;
while(x!=0){
result++;
x=(x-1)&x;
}
return result;
}
}