位图

目录

位图的概念

位图的实现

寻找位置

set

reset

test

面试题

1.给定100亿个整数,设计算法找到只出现一次的整数?

2. 给两个文件,分别有100亿个整数,我们只有1G内存,如何找到两个文件交集? 

3. 位图应用变形:1个文件有100亿个int,1G内存,设计算法找到出现次数不超过2次的所有整数.


位图的概念

如果出现海量数据判断数据在不在问题,我们用哈希表无法解决,我们可以利用哈希思想来创建一个新的stl容器,用bit位上的0或1来表示数据存在与否的哈希表

stl库中存在bitmap

主要有三个接口

set插入元素,置为1

reset删除元素,置为0

test测试元素在不在,判断是否为1

位图的实现

位图的底层是数组

位图的模板参数我们需要传需要处理的数据个数,并在初始化的时候设置数组大小为N/32+1,因为一个int是32个bit位

寻找位置

在数组中bit位分布

可以用需要找的值key/32寻找到在哪一个int数据上,再用key%32寻找到在这个int的第几个bit位上

set

我们向让bit位这个位变成1,可以用这个int数据与(1左移之后值那一位变为1,其他区全为0)之后进行按位或赋值

reset

我们向让bit位这个位变成0,可以用这个int数据与(1左移之后值先进行按位取反是那一位变为0,其他区全为1)再进行按位与赋值

test

我们测试这个bit位是否为1,可以之间用这个int数据与(1左移之后值那一位变为1,其他区全为0)相与

面试题

1.给定100亿个整数,设计算法找到只出现一次的整数?

首先100亿个整数会不会有空间的问题?答案是肯定不会的,因为开空间和数据范围有关系,和数据个数没有关系,100亿个整数,每个数的范围都是42亿(2^32-1)之内,不会说有100亿个不重复的整数

所以这里我们可以使用位图进行解决,这里找只出现一次的整数,我们可以使用两个位图来解决

1.如果没有出现,两个位图全为0

2.如果只出现一次,两个位图一个为1,一个为0

3.如果出现两次及以上,两个位图全为1

0次                00

1次                01

两次及以上    10

代码:

2. 给两个文件,分别有100亿个整数,我们只有1G内存,如何找到两个文件交集? 

思路:我们分别将两个100一亿个整数存储到两个位图当中,然后对两个位图按比特位进行相与

3. 位图应用变形:1个文件有100亿个int,1G内存,设计算法找到出现次数不超过2次的所有整数.

这题与题一类似

我们改为

0次               00

1次               01

2次               11

3次及以上    10

代码

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

系统架构25 - 软件架构设计(4)

软件架构复用 软件产品线定义分类原因复用对象及形式基本过程 软件产品线 软件产品线是指一组软件密集型系统,它们共享一个公共的、可管理的特性集,满足某个特定市场或任务的具体需要,是以规定的方式用公共的核心资产集成开发出来的。即围绕…

2023全球云计算市场份额排名

关注卢松松,会经常给你分享一些我的经验和观点。 最近Synergy研究院发布了最新的全球云计算市场份额排名。 亚马逊依旧是以31%的的市场份额排名第一,微软azure24%排名第二,Google云11%排名第三,阿里云4%排名第四。腾讯云和IBM、…

红日靶场2学习

靶场下载来自: http://vulnstack.qiyuanxuetang.net/vuln/detail/3/ 靶场统一登录密码:1qazWSX 按大佬的说法是 环境需要模拟内网和外网两个网段,PC端虚拟机相当于网关服务器,所以需要两张网卡,一个用来向外网提供web…

阿里云4核16G服务器配置怎么样?如何收费?

阿里云4核16G服务器优惠价格ECS云服务器经济型e实例26元1个月、149元半年、79元3个月,4核16G通用算力u1服务器、通用型g7、通用型g8i、AMD通用型g8a、性能增强通用型g8ae、高主频通用型hfg8i、AMD通用型g7a、内存型r7p等均提供4核16G配置。阿里云服务器网aliyunfuwu…

小白学习Halcon100例:如何利用动态阈值分割图像进行PCB印刷缺陷检测?

文章目录 *读入图片*关闭所有窗口*获取图片尺寸*根据图片尺寸打开一个窗口*在窗口中显示图片* 缺陷检测开始 ...*1.开运算 使用选定的遮罩执行灰度值开运算。*2.闭运算 使用选定的遮罩执行灰度值关闭运算*3.动态阈值分割 使用局部阈值分割图像显示结果*显示原图*设置颜色为红色…

数据结构.图的存储

一、邻接矩阵法 二、邻列表法 三、十字链表法

Python爬虫——解析库安装(1)

目录 1.lxml安装2.Beautiful Soup安装3.pyquery 的安装 我创建了一个社区,欢迎大家一起学习交流。社区名称:Spider学习交流 注:该系列教程已经默认用户安装了Pycharm和Anaconda,未安装的可以参考我之前的博客有将如何安装。同时默…

半理想架构的Doherty功率放大器理论与仿真-基于GAN器件CGH40010F

半理想架构的Doherty功率放大器理论与仿真-基于GAN器件CGH40010F 理想架构的Doherty功率放大器理论与仿真中已经介绍了如何在ADS中使用理想电流源来对DPA的架构进行仿真。但是理想的电流源太理想了,电压、电流的许多行为都是需要自己使用数学公式去严格定义&#x…

Linux环境中的git

目录 1.要使用git,首先要安装git 2.首次使用git需要做的操作 3.git操作 1.要使用git,首先要安装git 指令:sudo yum install -y git 2.首次使用git需要做的操作 在gitee网页,在你的仓库中找到: 先将下面两行代码分别…

FT2232调试记录(1)

FT2232调试记录(1) FT2232调试记录(2) FT2232调试记录(3) (1)FT2232简介: FT2232是一种通用的USB转串口芯片,用于在计算机和外部设备之间建立通信连接。它…

easyx搭建项目-永七大作战(割草游戏)

永七大作战 游戏介绍: 永七大作战 游戏代码链接:永七大作战 提取码:ABCD 不想水文了,直接献出源码,表示我的诚意

【JAVA WEB】JavaScript(WebAPI)--DOM基本概念 获取元素 点击事件 键盘事件

目录 什么是WebAPI DOM的基本概念 DOM是什么 DOM树 获取元素 querySelector querySelectorAll 事件 事件初识 基本概念 事件三要素 点击事件 键盘事件 什么是WebAPI 前端学习的 JS 分成三个大的部分 ECMAScript:基础语法部分DOM API:操作…