java数据结构与算法刷题-----LeetCode338. 比特位计数

java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846

文章目录

    • 位运算统计1的个数
    • 动态规划

在这里插入图片描述

位运算统计1的个数

🏆LeetCode461. 汉明距离https://blog.csdn.net/grd_java/article/details/137608654

461题考察的就是统计二进制串中1的个数。其中BK算法是经典算法,这里也使用BK来实现

解题思路:时间复杂度O( n ∗ l o g 2 n n*log_2n nlog2n),空间复杂度O( 1 1 1)

依次计算从0到n的每个数字的二进制中1的个数,遍历0-n需要n时间复杂度,而BK算法需要logn的时间复杂度

代码

在这里插入图片描述

class Solution {
    public int[] countBits(int n) {
        int ans[] = new int[n+1];//保存答案
        for(int i = 0;i<n+1;i++){//对每个数字进行BK算法统计1的个数
            int count = 0;//统计1的个数
            int num = i;//获取当前数字
            while(num!=0){//只要num的二进制串还有1就继续
                num &= (num-1);//去掉最右边的1
                count++;//每去一个,count+1
            }
            ans[i] = count;//保存当前数字中二进制1的个数
        }
        return ans;
    }
}

动态规划

解题思路:时间复杂度O( n n n),空间复杂度O( 1 1 1)

想要作图来表示,但是有些复杂,日后排版完成后再放上来

代码1. 最高有效位

在这里插入图片描述

class Solution {
    public int[] countBits(int n) {
        int[] bits = new int[n + 1];
        int highBit = 0;
        for (int i = 1; i <= n; i++) {
            if ((i & (i - 1)) == 0) {
                highBit = i;
            }
            bits[i] = bits[i - highBit] + 1;
        }
        return bits;
    }
}

在这里插入图片描述

class Solution {
    int[] res;//保存最终结果
    public int[] countBits(int n) {
        res = new int[n + 1];
        dfs(1, 1, n);//从1开始算1的个数
        return res;
    }
    //动态规划
    private void dfs(int i, int count, int n) {
        if (i > n) return;//如果i>n则无需继续统计,因为我们只要0-n的二进制1的个数
        res[i] = count;//将当前i的1的个数保存
        dfs(i << 1, count, n);//i左位移1位,相当于乘2.1的个数不变。例如1,左移一位10
        dfs((i << 1) + 1, count + 1, n);//i左位移1位后,+1,1的数量+1,例如1,左移一位10,+1后11.正好覆盖所有情况
    }
}
代码2. 最低有效位

在这里插入图片描述

class Solution {
    public int[] countBits(int n) {
        int[] bits = new int[n + 1];
        for (int i = 1; i <= n; i++) {
            bits[i] = bits[i >> 1] + (i & 1);
        }
        return bits;
    }
}
代码3. 最低设置位

在这里插入图片描述

class Solution {
    public int[] countBits(int n) {
        int[] bits = new int[n + 1];
        for (int i = 1; i <= n; i++) {
            bits[i] = bits[i & (i - 1)] + 1;
        }
        return bits;
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/547455.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2023年图灵奖揭晓,你怎么看?

Avi Wigderson——理论计算机科学的先锋&#xff0c;荣获2023年图灵奖 在科技界&#xff0c;图灵奖堪称与诺贝尔奖齐名的崇高荣誉&#xff0c;它每年授予对计算机行业的贡献达到重大突破的个人或团队。今年&#xff0c;这一声誉卓著的奖项被授予了普林斯顿大学的数学教授 Avi …

上位机图像处理和嵌入式模块部署(树莓派4b安装opencv)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 树莓派4b上面安装的镜像应该是debian系统&#xff0c;本身是可以用apt-get进行软件下载的。这一点对于我们来说就非常的方便。因为&#xff0c;如果…

毕设选51还是stm32?51太简单?

如果你更倾向于挑战和深入学习&#xff0c;STM32可能是更好的选择。如果你希望更专注于底层硬件原理&#xff0c;51可能更适合。我这里有一套嵌入式入门教程&#xff0c;不仅包含了详细的视频讲解&#xff0c;项目实战。如果你渴望学习嵌入式&#xff0c;不妨点个关注&#xff…

Spring Boot | SpringBoot对 “SpringMVC“的 “整合支持“、SpringMVC“功能拓展实现“

目录: SpringMVC 的 “整合支持” ( 引入"Web依赖启动器"&#xff0c;几乎可以在无任何额外的配置的情况下进行"Web开发")1.SpringMVC "自动配置" 介绍 ( 引入Web依赖启动器"后&#xff0c;SpringBoot会自动进行一些“自动配置”&#xff0…

计算机网络 Cisco路由器基本配置

一、实验内容 1、按照下表配置好PC机IP地址和路由器端口IP地址 2、配置好路由器特权密文密码“abcd&#xff0b;两位班内序号”和远程登录密码“star” 3、验证测试 a.验证各个接口的IP地址是否正确配置和开启 b.PC1 和 PC2 互ping c.验证PC1通过远程登陆到路由器上&#…

Linux笔记之查看docker容器目录映射

Linux笔记之查看docker容器目录映射 —— 2024-04-15 code review! docker inspect 容器ID或容器名 | grep -A 20 Mounts实践 grep -A 参数详解&#xff1a; grep 的 -A 参数用于在输出中包括匹配行后的指定数目的行。 使用 -A 参数 该参数的基本语法如下&#xff1a; …

[大模型]InternLM2-7B-chat FastAPI 部署

InternLM2-7B-chat FastAPI 部署 InternLM2 &#xff0c;即书生浦语大模型第二代&#xff0c;开源了面向实用场景的70亿参数基础模型与对话模型 &#xff08;InternLM2-Chat-7B&#xff09;。模型具有以下特点&#xff1a; 有效支持20万字超长上下文&#xff1a;模型在20万字…

Mini-Gemini: 探索多模态视觉语言模型的新境界

一、背景 在数字化时代&#xff0c;人工智能的发展正以前所未有的速度推进。特别是在多模态学习领域&#xff0c;结合视觉和语言的能力已成为研究的热点。最近&#xff0c;一篇名为“Mini-Gemini: Mining the Potential of Multi-modality Vision Language Models”的文章在arX…

基于SSM项目个人健康信息管理系统

采用技术 基于SSM项目个人健康信息管理系统的设计与实现~ 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringMVCMyBatis 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 页面展示效果 用户端 用户首页 健康知识 用户注册 医院推荐信息 系统概要…

linux 云计算平台基本环境(知识准备篇)

为了更多的了解云计算平台&#xff0c;结合云计算和linux的知识写了一篇云计算的介绍和汇总。 文章目录 前言1. centos的软件管理1.1 yum软件包管理1.1.1 yum命令语法&#xff1a;1.1.2 安装软件包的步骤1.1.3 yum源 2. 主机名管理与域名解析3. centos的防火墙管理4. openstack…

以pytorch pipeline并行为例,分析各kernel的耗时占比及性能瓶颈

以pytorch pipeline并行为例,分析各kernel的耗时占比及性能瓶颈 1.生成pipeline并行的测试代码2.pipeline profing3.生成nsys2json.py代码4.将nsys sqlite格式转chrome json格式5.生成耗时成分统计代码6.统计耗时成分7.耗时成分如下:8.查看GPU PCIE链路状态9.链路状态如下10.Ns…

jetson系列开发板使用虚拟机烧录系统时,遇见无法识别开发板的情况

在双系统中的ubuntu系统烧录没问题&#xff0c;但是电脑Ubuntu系统由于版本低&#xff0c;所以没有网络&#xff0c;烧录起来还的连网线&#xff0c;所以问了开发板的工程师&#xff0c;所幸&#xff0c;解决了问题&#xff0c;很感谢工程师的指导&#xff0c;特此记录一下&…

LabVIEW开发继电保护测试仪自动检测

LabVIEW继电保护测试仪自动检测系统 继电保护测试仪在电力系统中发挥着不可替代的作用&#xff0c;确保了电力系统的安全稳定运行。然而&#xff0c;随着电力系统的复杂性日益增加&#xff0c;对继电保护测试仪的检测与校准提出了更高的要求。传统的手动检测方式耗时长、效率低…

TypeScript-官方基础模板创建的小程序,如何创建js文件

如何创建JS文件&#xff0c;不需要寻找“js”文件类型&#xff0c;只需要创建一个新的“文件”即可。 第一步:先删除 ts文件;如 index.ts 第二步:右键点击项目&#xff0c;选择“新建”&#xff0c;然后选择“文件”。 第三步:在弹出的界面中&#xff0c;在“文件名”中输入“…

CentOS 7安装、卸载MySQL数据库

说明&#xff1a;本文介绍如何在CentOS 7操作系统下使用yum方式安装MySQL数据库&#xff0c;及卸载&#xff1b; 安装 Step1&#xff1a;卸载mariadb 敲下面的命令&#xff0c;查看系统mariadb软件包 rpm -qa|grep mariadb跳出mariadb软件包信息后&#xff0c;敲下面的命令…

学习Rust的第7天:参考资料

Hey Everyone, 大家好&#xff0c; Today is references and borrowing. Immutable references allow reading data without ownership transfer, while mutable references enable modification, subject to rules ensuring exclusive access and preventing data races.今天的…

k8s控制器(五)_____DaemonSet

DaemonSet控制器 DaemonSet控制器是Kubernetes中的一种控制器&#xff0c;用于确保集群中的每个节点都运行一个Pod的副本。它通常用于在整个集群中部署一些系统级别的服务&#xff1a; 在每一个node节点运行一个存储服务&#xff0c;例如gluster&#xff0c;ceph。在每一个no…

Github copilot我用正版登录授权的,来体验一下吧

Github copilot 市面上的那种可以说是破解的&#xff0c;不是代码补全不稳定&#xff0c;就是chat不稳定&#xff0c;反正就是不怎样&#xff01; 下面是官网正版开通的&#xff0c;欢迎体验15天 体验地址&#xff1a;https://www.bilibili.com/read/cv33696436 这种copilo…

半导体存储电路知识点总结

目录 一、SR锁存器 1.SR锁存器的概念 2.作用 二、电平触发器&#xff08;Flip-Flop&#xff09; 1.时钟信号 2.电平触发的触发器电路结构 3.带异步置位复位的电平触发器 三、边沿触发器 1.特点 2.两个D触发器组成的边沿触发D触发器 3.CMOS边沿触发D触发器的典型电路 …

钉钉对接T+生成总账凭证

客户介绍&#xff1a; 某餐饮连锁企业是一个专注于特色风味徽州菜的餐饮品牌&#xff0c;总部位于杭州市&#xff0c;其推出的各式特色徽菜深受市场的好评&#xff0c;在杭州本地的餐饮市场中有着很强的竞争力。公司ERP使用用友T系统&#xff0c;通过钉钉管理员工费用报销流程…