首页 > 其他分享 >比特位计数

比特位计数

时间:2023-06-15 14:32:15浏览次数:32  
标签:countBits 示例 int 比特 计数 num ans new


比特位计数

题目:
给定一个非负整数 num。对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回。

示例 1:
输入: 2
输出: [0,1,1]

示例 2:
输入: 5
输出: [0,1,1,2,1,2]

解题思路1:分别求出每个数的 二进制中1的个数

class Solution {
    public int[] countBits(int n) {
        int[] ans = new int[n + 1];

        for(int i = 0; i <= n; i++) {
            ans[i] = getAns(i);
        }

        return ans;
    }

    private int getAns(int n) {
        int count = 0;
        while(n > 0) {
            n &= (n - 1);
            count++;
        }

        return count;
    }
}

解题思路2:用动态规划解决

class Solution {
    public int[] countBits(int n) {

        int ans[] = new int[n + 1];
        ans[0] = 0;
        if(n == 0) {
            return ans;
        }
        
        ans[1] = 1;

        for(int i = 2; i <= n; i++) {
            ans[i] = ans[i & (i - 1)] + 1;
        }

        return ans;
    }
}


标签:countBits,示例,int,比特,计数,num,ans,new
From: https://blog.51cto.com/u_14813899/6487427

相关文章

  • [BZOJ 2839] 集合计数
    首先求一个集合的个数可由\(2\cdot2\cdot2\cdot2...\)得到,其中每个二表示选或者不选本个元素。即一个有\(n\)个元素的集合存在\(2^n\)个子集然后同理可得从\(2^n\)个子集中选交集的方案数为\(2\cdot2\cdot2\cdot2...\)(共包含\(2^n\)个\(2\))所以总数......
  • 烷基计数
    一句话题意求\(n\)个点的每个点度数不超过\(4\)且根的度数不超过\(3\)的有根树的数目。题解定义\(F_{n,i}\)为节点数为\(n\),根节点度数为\(i\)的个数。\(A_n\)为节点数为\(n\)个数,\(\displaystyleA_n=\sum_{i=0}^3F_{n,i}\)。在转移的时候去考虑三棵子树......
  • [LeetCode] 1348. Tweet Counts Per Frequency 推文计数
    Asocialmediacompanyistryingtomonitoractivityontheirsitebyanalyzingthenumberoftweetsthatoccurinselectperiodsoftime.Theseperiodscanbepartitionedintosmaller timechunks basedonacertainfrequency(every minute, hour,or day......
  • 2021百度之星- 复赛 Add or Multiply 1 第二类斯特林数计数
    AddorMultiply1本质上这个题目中乘法和加法没有任何区别因为加法乘法均满足交换律不妨考虑乘法最后分成了k块每块内部没有顺序但是块之间有顺序有顺序共有m个乘法操作这样的方案数是\(s(m,k)k!\)这个时候要求k-1个空隙必须有加法但是开头和结尾可以有也可以没有这个......
  • P4071 [SDOI2016]排列计数
    [SDOI2016]排列计数题目描述求有多少种\(1\)到\(n\)的排列\(a\),满足序列恰好有\(m\)个位置\(i\),使得\(a_i=i\)。答案对\(10^9+7\)取模。输入格式本题单测试点内有多组数据。输入的第一行是一个整数\(T\),代表测试数据的整数。以下\(T\)行,每行描述一组测试......
  • c语言:计数器实验
    要求:P1口接2只LED灯,定时器T1采用计数模式,方式1中断,外接按钮开关作为计数输入,当按2次按钮开关,P1口第一只LED点亮,再按2次按钮开关,P1口第二只LED点亮,再按2次按钮,所有LED灯熄灭。 1#include<reg52.h>23//定义LED灯的控制端口和对应的控制位4sbitLED1=P1^0;5......
  • CCSP2019T2_纸牌计数 | 2019苏州CCSP大学生计算机系统与程序设计竞赛
    题目描述偶然在CSDN看到有人写了CCSP2019T2_纸牌计数的题解,突然想起来是一个不错的计数、dp题。以前的U盘找不到了,记得当时存了一步步偏分到AC代码,可惜。又想起来18年打铁了。。。此人的题解的链接CCSP201902纸牌计数——解题报告当年一共有5题,取自:https://www.sohu.com/a/34......
  • 解决layui框架自带的excel导出长数据变科学计数法
    项目中需要导出excel时,如果是大项目、要求高,当然使用第三方插件,或者后台导出是必要的,但是如果是一些小型项目,并且对导出excel样式要求不是很严格的,而且前端框架用的是layui的,layui框架自带的excel导出就成了我们最方便快捷的选择,但是在导出数据时会遇到一个问题:问题:layui框架自......
  • Jmeter 循环控制器与计数器
    图1 图2  图3 图4: 图5:  图6:   ......
  • Java:从单线程计数器到多线程数据同步synchronized和原子类Atomic
    (目录)使用单线程单线程修改计数器的值,没有发生问题,每次运行结果都是10000,不过程序耗时较长packagecom.example;/***计数器*/classCounter{privatestaticlongcount;publicstaticlonggetCount(){returncount;}publicstaticv......