当前位置: 首页 > news >正文

LeetCode、338. 比特位计数【简单,位运算】

文章目录

  • 前言
  • LeetCode、338. 比特位计数【中等,位运算】
    • 题目链接与分类
    • 思路
      • 位运算移位处理
      • 前缀思想实现
  • 资料获取

前言

博主介绍:✌目前全网粉丝2W+,csdn博客专家、Java领域优质创作者,博客之星、阿里云平台优质作者、专注于Java后端技术领域。

涵盖技术内容:Java后端、算法、分布式微服务、中间件、前端、运维、ROS等。

博主所有博客文件目录索引:博客目录索引(持续更新)

视频平台:b站-Coder长路


LeetCode、338. 比特位计数【中等,位运算】

题目链接与分类

题目链接:LeetCode、338. 比特位计数

分类:基础算法/位运算


思路

位运算移位处理

思路:暴力,来对所有数字的二进制位来进行模拟计算。

复杂度分析:时间复杂度O(n.logn);空间复杂度O(n)

class Solution {//10万数据量public int[] countBits(int n) {int[] res = new int[n + 1];for (int i = 0; i <= n; i ++) {int count = 0;int num = i;while (num != 0) {if (num % 2 == 1) count ++;num = num >> 1;}res[i] = count;}return res;}
}

image-20240207173327959


前缀思想实现

思路:二叉树来保存1-n,左子树使用0、右子树使用1,左边表示+1,右边表示x2+1。

image-20240207174235989

复杂度分析:时间复杂度O(n);空间复杂度O(n)

class Solution {// 主函数,计算 0 到 n 的每个数字的二进制表示中包含的 1 的个数public int[] countBits(int n) {int[] res = new int[n + 1]; // 初始化结果数组// 从数字1开始进行深度优先搜索dfs(1, n, 1, res);return res;}// 深度优先搜索函数private void dfs(int num, int max, int cnt, int[] res) {if (num > max) { // 如果当前数字大于给定的最大值,结束递归return;}res[num] = cnt; // 更新结果数组,记录当前数字的二进制表示中包含的1的个数// 递归调用左子树和右子树dfs(num << 1, max, cnt, res); // 左子树,1的个数不变dfs((num << 1) + 1, max, cnt + 1, res); // 右子树,1的个数加1}
}

image-20240208110108685


资料获取

大家点赞、收藏、关注、评论啦~

精彩专栏推荐订阅:在下方专栏👇🏻

  • 长路-文章目录汇总(算法、后端Java、前端、运维技术导航):博主所有博客导航索引汇总
  • 开源项目Studio-Vue—校园工作室管理系统(含前后台,SpringBoot+Vue):博主个人独立项目,包含详细部署上线视频,已开源
  • 学习与生活-专栏:可以了解博主的学习历程
  • 算法专栏:算法收录

更多博客与资料可查看👇🏻获取联系方式👇🏻,🍅文末获取开发资源及更多资源博客获取🍅


整理者:长路 时间:2024.2.13

http://www.lryc.cn/news/301961.html

相关文章:

  • 借助Aspose.BarCode条码控件,C# 中的文本转 QR 码生成器
  • vue打包优化,webpack的8大配置方案
  • B端系统从0到1:有几步,其中需求分析要做啥?
  • django中查询优化
  • 【JavaScript】输入输出语法
  • 多模态基础--- word Embedding
  • Mysql 日志
  • 【开源】SpringBoot框架开发服装店库存管理系统
  • 云原生之容器编排实践-在K8S集群中使用Registry2搭建私有镜像仓库
  • 标准IO 2月4日学习笔记
  • 如何在1Panel上偷渡HTTP/3
  • Qt实用技巧:QCustomPlot做北斗GPS显示绝对位置运动轨迹和相对位置运动轨迹图的时,使图按照输入点顺序连曲线
  • 116 C++ 可变参数函数,initializer_list (初始化列表), 省略号形参
  • 强国有我社会实践公益活动在合肥市庐阳区开展
  • Nginx 正向代理、反向代理
  • 软考学习--计算机组成原理与体系结构
  • fish终端下conda activate失败
  • FPGA之移位寄存器
  • Android Compose Material3 ModalNavigationDrawer 抽屉的使用(处理了一些坑)
  • golang select两个channel性能稳定,三个channel时性能会发生抖动,为什么?
  • VSCODE上使用python_Django
  • 探索IDE的世界:什么是IDE?以及适合新手的IDE推荐
  • DoRA(权重分解低秩适应):一种新颖的模型微调方法
  • centos7.9 搭建k8s
  • 使用vite创建项目
  • EXTI外部中断
  • 小肥柴慢慢手写数据结构(C篇)(5-4 中场小结)
  • flutter 功能
  • Sql Server 存储过程
  • 二.重新回炉Spring Framework:Spring Framework主要组件概览