给定一个数字N,找出与N二进制位数相同,小于等于N且二进制中1最多的数M

问题介绍:

给定一个数字N,找出一个数字M小于等于N,使得二进制位数与N的二进制位数相同,且M的二进制中所包含的1的个数最多,请输出最小的M.

代码块:


/**
 * @Author magic-Jing
 * @Date 2020/8/12 21:39
 */
public class Combination {
    public static void handle(int[]arr){

        for (int i : arr){
            String str = Integer.toBinaryString(i);
            System.out.println(i+"的二进制为: ");
            System.out.println(str);
            char[] chars = str.toCharArray();
            boolean bool = false;
            boolean all_1 = true;//判断是否为全1
            for (int j = 1;j

输出结果:

给定一个数字N,找出与N二进制位数相同,小于等于N且二进制中1最多的数M_第1张图片

 

你可能感兴趣的:(算法,算法,java)