最接近的数
2016-06-22 15:34
204 查看
题目描述
有一个正整数,请找出其二进制表示中1的个数相同、且大小最接近的那两个数。(一个略大,一个略小)给定正整数int x,请返回一个vector,代表所求的两个数(小的在前)。保证答案存在。
测试样例:
2
返回:[1,4]
思路:以给出的数为基础,先将给出的数的二进制中有几个1判断出来,然后再分别判别当前数左边右边的数是否二进制中的1也和当前数一样
代码如下:
public int[] getCloseNumber(int x) {
int[] ss =new int[2];
int num = getNum(x);
int left =x - 1;
int right = x + 1;
while(left >0){
if(num == getNum(left)){
break;
}
left--;
}
ss[0] = left;
while(true){
if(num == getNum(right)){
break;
}
right++;
}
ss[1] = right;
return ss;
}
public int getNum(int x) {
int count = 0;
while(x>0){
if((x&1)!=0){
count++;
}
x>>=1;
}
return count;
}
相关文章推荐
- 接口安全
- IOS 定位服务 定位到城市具体路段
- I.MX6Q(TQIMX6Q/TQE9)学习笔记——U-Boot移植
- Fedora 24 正式发布!
- java常用代码
- openerp安装记录及postgresql数据库问题解决
- 我也试过 过了下午四点就不吃。饿了就喝水。一个星期我就瘦了六斤。-------好励志。。。真的么真的么,快到下午四点了。。。
- 【IOS】This certificate has an invalid issuer问题
- 雷军北大15分钟演讲:我至少有胆量去想
- jQuery和hwSlider实现内容响应式可触控滑动切换效果附源码下载(二)
- Java字符串拆分问题
- Java字符串拆分问题
- java对象类型转换
- Java字符串拆分问题
- Sass学习之快速上手bootstrap-sass
- Java字符串拆分问题
- Java字符串拆分问题
- Java字符串拆分问题
- notepad快捷键
- Java字符串拆分问题