zoukankan      html  css  js  c++  java
  • 338. Counting Bits

    一、题目

      1、审题

      

      2、分析

        给出数字 num, 求出 0~num 的每个数字的二进制形式中包含的 字符 ‘1‘ 的个数。

    二、解答

      1、思路

        方法一、

          依次计算 1~n 每个数字的二进制形式中包含的 ‘1‘ 的个数。

        public int[] countBits(int num) {
            int[] result = new int[num + 1]; 
        	for (int i = 1; i <= num; i++) {
        		int tmp = i, count = 0;
    			while(tmp > 0) {
    				count++;
    				
    				if(tmp == 1) 
    					break;
    				tmp &= (tmp - 1);
    			}
    			result[i] = count;
    		}
        	
        	return result;
        }
    

      

      方法二、

        采用 f[n] = f[n >> 1] + (n & 1) 计算数字 n 包含的 ‘1’ 的个数。

        其中 f[n >> 1] 记录的是 n 的二进制形式的前一部分(除了最后一个字符)

        n & 1 : 记录的是最后一个字符是否为 1

        public int[] countBits(int num) {
            int[] f = new int[num + 1];
    		for (int i = 1; i <= num; i++) 
    			f[i] = f[i >> 1] + (i & 1);
    		return f;
        }
    

      

  • 相关阅读:
    Linux中$含义
    Linux文本处理之grep
    MySQL8.0.15的安装与配置---win10
    Jenkins实现自动运行jmeter脚本
    Hystrix初识
    Feign初始
    AS的Gradle下载不成功
    Linux安装一些软件
    OAuth2初识
    IDEA无法打开等奇异问题终极解决方法
  • 原文地址:https://www.cnblogs.com/skillking/p/11112971.html
Copyright © 2011-2022 走看看