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

公司的网站建设会计培训

公司的网站建设,会计培训,石家庄市住房和城乡建设厅网站,网站建设分工目录 问题:给40亿个不重复的无符号整数,没排过序。给一个无符号整数,如何快速判断一个数是否在这40亿个数中。 2.简单实现一个位图 3.如何利用位图求两个集合的交集、并集 问题:给40亿个不重复的无符号整数,没排过序…

目录

问题:给40亿个不重复的无符号整数,没排过序。给一个无符号整数,如何快速判断一个数是否在这40亿个数中。

2.简单实现一个位图 

 3.如何利用位图求两个集合的交集、并集


问题:给40亿个不重复的无符号整数,没排过序。给一个无符号整数,如何快速判断一个数是否在这40亿个数中。

  1. 40亿个不重复的无符号整数需要多少空间:大概16G;那么使用哈希或者是红黑树内存不够
  2. 可以直接遍历,时间复杂度O(N);
  3. 排序时间复杂O(logN),二分查找时间复杂度O(longN);

Q:效率都不太好,有没有更好办法呢?

A:让一个比特位来标记一个元素存在或者不存在

40个整形放在位图里面只需要0.5G,而且查找的时间复杂度:O(1),非常棒;

2.简单实现一个位图 

位图的概念:所谓位图,就是用每一位来存放某种状态,适用于海量数据,数据无重复的场景。通常是用来判断某个数据存不存在的。

  1. 初始化+1是为了:除了之后有余数,需要多开一个单位来存放,
  2. 大小端对于位图没有影响

 

template<size_t N>class bitset{public:bitset(){_bits.resize(N / 8 + 1, 0);}void set(size_t x)//把状态改为存在{//看在哪一个字节里面size_t i = x / 8;//第几位size_t j = x % 8;//大小端没有区别,找也是按这种方法找_bits[i] |= (1 << j);}void reset(size_t x)//把状态改为不存在{size_t i = x / 8;size_t j = x % 8;_bits[i] &= (~(1 << j));}bool test(size_t x)//查询是否存在{size_t i = x / 8;size_t j = x % 8;return _bits[i] & (1 << j);}private:std::vector<char> _bits;};

 3.如何利用位图求两个集合的交集、并集

1.并集

  • 把两个集合的元素都插入在一个位图里面,然后遍历一遍判断在不在即可;

 

 2.交集

  • 思路一:把一个集合插入在一个位图里面,遍历另外一个集合的元素是否存在,再把结果去重
  • 思路二:把两个集合分别插入在不同的两个位图,同时遍历两个位图,如果两个都是存在的就在

 

总结一下:位图的可以做些什么?

A:1. 快速查找某个数据是否在一个集合中 2. 排序(全部插入,遍历一遍) 3. 求两个集合的交集、并集等

http://www.dtcms.com/wzjs/93675.html

相关文章:

  • 做外贸有哪些免费的网站长沙seo推广公司
  • 深圳公安门户网站官网网络营销推广网站
  • 媒体村网站建设阿里指数官网
  • ui设计主要做什么seo报价单
  • 有网址的公司宁宁网seo
  • 深圳网站建设php企业网络推广网站
  • 信息科技有限公司网站建设2023年最新新闻简短摘抄
  • 网站的运营推广方案百度网站怎样优化排名
  • 中文域名网站 被搜索海淀区seo全面优化
  • 自己可以做网站怎样做seo搜索引擎优化
  • 哪里网站建设公司好高质量外链
  • 动态网站的好处推广文章的注意事项
  • 网站管理平台扩展插件怎么找平台推广自己的产品
  • 新建的网站只能用临时域名打开百度怎么优化关键词排名
  • 网站设计模版免费下载水平优化
  • 南宁建站平台万网官网
  • 邯郸网站优化公司开网店
  • 商城类网站如何做seo收录优美图片app
  • 深圳市地图全图关键词排名优化公司推荐
  • 电视剧怎么做短视频网站东莞营销型网站建设
  • 网站开发制作接单平台培训课程网站
  • 制作灯笼的手工做法步骤谷歌seo和百度seo区别
  • 凯里网站设计哪家好生哥seo博客
  • 长沙城乡建设网站首页百度投诉中心24人工客服
  • 手机网站制作器网站广告制作
  • seo工具排行榜seo推广怎么入门
  • 福清市建设局官方网站网页搜索优化
  • 网站建设网站自助建设网站建设品牌公司
  • 网站建设属于软件开发吗微信运营技巧
  • 景区官方网站建设谷歌google官网入口