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

LeetCode338.比特位计数

时间:2023-08-22 09:44:35浏览次数:38  
标签:二进制位 二进制 比特 int res 计数 LeetCode338 new

先以2,3为例,它们的二进制分别是10、11,可以看到,忽略其二进制中最高位的1之后,这组数中二进制位为1的数量分别和数字0,1中二进制位为1的数量相同,再以4,5,6,7为例,他们的二进制分别是100、101、110、111,忽略其二进制中最高位的1之后,这组数中二进制位为1的数量分别和数字0,1,2,3中二进制位为1的数量相同,至此可以得出规律:

res[i+j]=res[j]+1;其中i2的幂次数(2,4,8等等),j的取值范围是[0,i);

class Solution {
    public int[] countBits(int n) {
        if(n==0) return new int[]{0};
        if(n==1) return new int[]{0,1};
        int[] res = new int[n+1];
        res[0]=0;res[1]=1;
        for(int i=2;i<=n;){
            for(int j=0;j<i;j++){
                if(i+j<=n){
                    res[i+j]=res[j]+1;
                }else{
                    break;
                }
            }
            i=2*i;
        }
        return res;
    }
}

 

标签:二进制位,二进制,比特,int,res,计数,LeetCode338,new
From: https://www.cnblogs.com/rockdow/p/17647724.html

相关文章

  • Go语言实现计数器的方法有哪些?
    Go语言中,实现计数器可以通过使用不同的机制和数据结构来实现。以下是几种常见的计数器实现方法:1 基于原子操作的计数器:Go的sync/atomic包提供了原子操作,可以用于实现高效的计数器,适用于并发环境。package mainimport (    "fmt"    "sync"    "sync/atomic")func......
  • 为什么InnoDB不像MyISAM那样维护一个预存储的行数计数器?
     InnoDB和MyISAM有不同的设计哲学和用途,这影响了它们如何维护和管理行数。以下是为什么InnoDB不像MyISAM那样维护一个预存储的行数计数器的原因:事务支持:InnoDB是一个事务型存储引擎,支持ACID事务。在任何给定时间,多个事务可能都在同一个表上进行操作,这......
  • 计数排序(Python)
    defcounting(data):"data里的value作为计数数组counts的index,然后把counts的value转换成data的index"#计数列表,存储每个值有多少个,以data的值作为索引,所以数组长度以最大值+1为准counts=[0foriinrange(max(data)+1)]#同时给数组赋初值0,等会逐个计数......
  • 专利统计数据库PATSTAT
    欧洲专利局(EPO)全球专利统计数据库PATSTAT是当前世界收录最全的专利数据库,专门面向专利分析人员、统计决策人员和高级研究人员。欧洲专利局发布的PATSTAT使用指南主要是对PATSTAT数据库使用进行全面性指导,帮助用户分析专利数据,为解决各种问题提供思路,并针对PATSTAT使用过程中的关键......
  • 利用GPT设计数据库表
    最近设计表,头都炸了。要命的是字段命名。不想用拼音。整了一堆自己不认识的单词,不知道以后维护起来会不会疯掉。由于我英语不好,只能是一个个的去查百度翻译。写完了,自己看着全不认识。做完了,才发现一个神器。肠子悔青了,只能下次用了。  突发奇想,有这个了,帮学生们去写毕业......
  • css计数器基本用法
    counter-reset定义计数器counter-increment定义计数器步长counter()/counters()使用计数器1.counter-resetcounter-reset:count11.1在同一层级中,重复使用counter-reset,可重新开始计数,与重置的含义吻合1.2多个计数器可在不同的层级配合使用1.3可......
  • P7438 更简单的排列计数 题解
    前置芝士:伯努利数等幂求和。其中伯努利数\(B_i\)的生成函数为\(\frac{x}{e^x-1}\)。首先这种逆序对有个套路的dp:令\(f_{i,j}\)表示填了前\(i\)个数,逆序对为\(j\),这时排列的\(val_{\pi}\)的乘积之和。有转移:\(f_{i,j}=\sum\limits_{k=0}^{i-1}f_{i-1,j-k}i^k\),初始......
  • 8.11 格路计数与乐子题
    邮戳拉力赛好题啊!写了一个错误的解,但仍未知道错在哪里。容易发现路径一定是:向上走,到一个点后向下走,走到一个点后再向上走,以此类推。往下走时,可以自由选择是下行时盖章还是上行时盖章,这也是一直往上走不最优的理由。从\(0\)向上走到\(n+1\)的路径长度可以最后再加,不用考虑......
  • P7092 计数题 题解
    前置题目:P5748集合划分计数。我们令\(Bell_n\)表示将\(n\)个有标号的球划分为若干集合的方案数。且\(Bell_n=n![x^n]e^{e^x-1}\)。首先,当\(k=0\)时,\(\mu(S)=0\),答案为\(0\)。当\(k=1\)时,\(\mu(S)=(-1)^{|S|},\varphi(S)=\prod\limits_{x\inS}(x-1)\)。记\(\pi(S)......
  • P4017 最大食物链计数
    \(P4017\)最大食物链计数最大食物链数量;最大指的是需要从一个入度为零的点开始到一个出度为零的点,这是一个完整的食物链,问我们给出的食物网中,食物链的数量①本题中,不仅需要记录一下入度,还要记录一下出度,这是因为我们要计算食物链的数量,食物链的最后一个结点,就是出度为......