如果一个数n是偶数那他一定和n>>1中1的个数一样,如果n是奇数,他一定比n>>1多一个数,具体可带几个数去验证比如8 :1000 右移一位100是4
7:111 右移一位11是3
主函数:
public static void main(String[] args) {
int n;
Scanner scanner = new Scanner(System.in);
n = scanner.nextInt();
// System.out.println(n);
int[] res = new int[n + 1];
res = countBits(n);
for (int i = 0; i <= n; i++) {
System.out.print(res[i] + " ");
}
}
函数:
public static int[] countBits(int n) {
int[] aa = new int[n + 1];
for (int i = 0; i <= n; i++) {
aa[i] = aa[i >> 1] + i % 2;
}
return aa;
}
最后
以上就是怡然哈密瓜最近收集整理的关于JAVA-剑指offer003 前n个数二进制中1的个数的全部内容,更多相关JAVA-剑指offer003内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复