金典——最接近的数__

来源:互联网 发布:sql查询多表相同列名 编辑:程序博客网 时间:2024/05/16 17:58

题目描述

有一个正整数,请找出其二进制表示中1的个数相同、且大小最接近的那两个数。(一个略大,一个略小)

给定正整数int x,请返回一个vector,代表所求的两个数(小的在前)。保证答案存在。

测试样例:
2

返回:[1,4]


思路:直接暴力。

import java.util.*;public class CloseNumber {    public int[] getCloseNumber(int x) {        // write code here        int[] res=new int[2];        int num=getOneNum(x);        int left=x-1;        int right=x+1;        while(left>0){            if(num==getOneNum(left))                break;            left--;        }        while(true){            if(num==getOneNum(right))                break;            right++;        }        res[0]=left;        res[1]=right;        return res;    }    public int getOneNum(int x){        int count=0;        while(x!=0){            if((x & 1)==1){                count++;            }            x>>=1;        }        return count;    }}


原创粉丝点击