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

Leetcode2166-设计位集

在这里插入图片描述
在处理大规模布尔数组时,我们经常面临空间和时间效率的双重挑战。

如果用普通的 boolean 数组,每个元素至少占用 1 字节,当数据量达到百万级别时,内存开销会非常可观。

而位集合(Bitset)通过将每个布尔值压缩为一个比特位,可以将空间占用降低到原来的 1/32。

以下是一个支持延迟翻转优化的高效 Bitset 实现。

代码

	class Bitset{private int[] set;//整形数组,用于存储位信息private final int size;//位集合的逻辑大小(用户视角的位数)private int zeros;//统计当前值为0的位的数量private int ones;//统计当前值为1的位的数量private boolean reverse;//反转标志//构造函数public Bitset(int n){set = new int[(n+31)/32];size = n;zeros = n;ones = 0;reverse = false;}public void fix(int i){int index = i/32;int bit = i%32;if(!reverse){//正常模式reverse=false,将0改为1if((set[index]&(1<<bit))==0){zeros--;ones++;set[index]|=(1<<bit);}}else{//反转模式reverse=true,将1改为0if((set[index]&(1<<bit))!=0){zeros--;ones++;set[index]^=(1<<bit);}}}public void unfix(int i){int index = i/32;int bit = i%32;if(!reverse){//正常模式reverse=false,将1改为0if((set[index]&(1<<bit))!=0){ones--;zeros++;set[index]^=(1<<bit);}}else{//反转模式reverse=true,将0改为1if((set[index]&(1<<bit))==0){ones--;zeros++;set[index]|=(1<<bit);}}}//翻转所有位(0变1,1变0)public void flip(){reverse = !reverse;int tmp = zeros;zeros=ones;ones = tmp;}//检查是否全为1public boolean all(){return ones == size;}//检查是否至少有一个1public boolean one(){return ones>0;}//返回1的数量public int count(){return ones;}//将位集合转换为字符串表示public String toString(){StringBuilder builder = new StringBuilder();for(int i=0,k=0,number,status;i<size;k++){number = set[k];for(int j=0;j<32&&i<size;j++,i++){status = (number>>j)&1;status ^= reverse?1:0;builder.append(status);}}return builder.toString();}}
http://www.dtcms.com/a/473965.html

相关文章:

  • 三种方法解——力扣206.反转链表
  • 企业网站广告网站响应式是什么意思
  • 湖南省郴州市邮编东莞seo网站建设公司
  • 差分信号可以分解为共模信号与差模信号
  • **标题:发散创新:探索SSR渲染技术的深度实现****摘要**:本文将深入探讨服务端渲染(SSR)技术的原理、优势以及实
  • 计算机视觉(opencv)——MediaPipe 实现手部关键点检测与可视化
  • 贵州省建设学校官方网站昆明网络公司开发
  • 没有版权可以做视频网站吗设计之家素材
  • Tomcat是一个容器
  • Easyx图形库应用(和Server程序进行交互)
  • Python自学25 - Django快速上手
  • 太原云起时网站建设广东知名网站建设
  • AI学习日记——深度学习
  • 如何设置PostgreSQL表字段为自增主键
  • 排版工具:也说Markdown的使用方法
  • 分销网站建站wordpress调用推荐文章代码
  • 数据湖Hudi-读取流程可视化
  • 智能环境感知屏幕自适应系统:原理、架构与实现
  • 中卫网站制作公司公司网站seo怎么做
  • Python高效搜索实现:从数据海洋到精准信息的智能导航
  • 安安网站建设优惠的网站快排公司电话
  • Elasticsearch 备份:snapshot 镜像使用篇
  • 10月12日星期天今日早报简报微语报早读
  • 著名建筑网站网站建设市场价
  • MySQL快速构建主从(基于GTID)
  • 感知机:单层,多层(二分类,多分类)
  • 宁波网站建设服务公司电话俄乌局势最新进展
  • python进阶_Day6
  • 网站pv uv统计wordpress 破解主题下载地址
  • 全参数与PEFT深度剖析