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

dw制作一个手机网站模板下载全屋装修设计定制整装

dw制作一个手机网站模板下载,全屋装修设计定制整装,线上推广方式,浙江省门户网站目录 一、位图概念二、海量数据面试题 一、位图概念 假如有40亿个无重复且没有排序的无符号整数#xff0c;给一个无符号整数#xff0c;如何判断这个整数是否在这40亿个数中#xff1f; 我们用以前的思路有这些#xff1a; 把这40亿个数遍历一遍#xff0c;直到找到为… 目录 一、位图概念二、海量数据面试题 一、位图概念 假如有40亿个无重复且没有排序的无符号整数给一个无符号整数如何判断这个整数是否在这40亿个数中 我们用以前的思路有这些 把这40亿个数遍历一遍直到找到为为止排序二分查找位图解决 遍历一遍的时间复杂度为O(N)排序是O(N * logN)二分查找是O(logN)第二种还不如第一种。前面两种方法如果是针对比较小的数据的话还行。但是如果是数据很大的效率就低了。所以我们可以使用第三种方法位图解决查找数据的问题。 位图概念 位图是通过每一个比特位来判断一个数是否是在还是不在。一个二进制比特位只有两种状态要么为0要么为1如果某个数据在则对应映射的比特位为1不在对应的比特位为0。位图适用于海量数据处理且数据无重复的场景时间复杂度为O(1) 用位图解决前面的问题 有40亿个无重复且没有排序的无符号整数给一个无符号整数如何判断这个整数是否在这40亿个数中 首先要了解1G大约等于10亿个字节1个整数等于4个字节1个字节等于8个比特位。换算下40亿个整数大约是16G。但是我们不可能开出16G的内存去查找一个数用位图就可以节省很多空间了。一个整数等于32个比特位根据位图的概念用每个比特位是1还是0来确定一个数到底在不在1个整数的32个比特位可以用来确定32个数据的存在所以16G除以32等于0.5G即512M这就是开辟的空间大小是不是节省多了。 这里是我们自己模拟出来的一个简单的位图主要有以下接口 1️⃣构造 使用vector的接口resize开辟出N / 32 1的空间大小每个位置初始化为0为什么要除32因为一个整数有32个比特位这32个比特位存储在vector数组的一个位置里为什么又要加1因为假如开的空间大小是5050/32等于1那到底是一个位置还是2个位置很明显是2个第一个位置刚好满32个比特位剩余18个比特位也要有位置放因此要有第二个位置。 2️⃣将该比特位设置为1 每个数都有对应映射的比特位将这个数除以32找到该数在数组中的位置取模32找到映射的第几个比特位1左移前面取模的位数然后按位或将该比特位设置为1 3️⃣将该比特位设置为0 前面同上先按位取反1左移前面取模的位数后的数然后按位与将该比特位设置为0 4️⃣判断状态 前面同上用按位与映射的位置和1移动后的位都是1才说明这个数在 类的模板是非类型模板参数传的是数据的大小。成员变量是vector类型方便开辟空间。为什么1是左移注意左移不是真的往左边移右移也不是真的往右边移跟方向没关系。左移是往高位移动右移是往低位移动其次还要看编译器vs下是小端存储数据的所以这里是左移。 代码 namespace yss {templatesize_t Nclass bitset{public://构造bitset(){_bit.resize(N / 32 1, 0);}//该比特位 置为1void set(size_t x){size_t i x / 32;size_t j x % 32;_bit[i] | (1 j);}//该比特位 置为0void reset(size_t x){size_t i x / 32;size_t j x % 32;_bit[i] ~(1 j);}//该比特位的状态在/不在bool test(size_t x){size_t i x / 32;size_t j x % 32;return _bit[i] (1 j);}private:vectorint _bit;}; }void Func1() {yss::bitset100 bs;bs.set(30);bs.set(60);bs.set(90);for (size_t i 0; i 100; i){if (bs.test(i)){cout i - 在 endl;}else{cout i - 不在 endl;}} }40亿个数据如下 yss::bitset-1* bs new bitset-1;//第一种写法 yss::bitset4294967295* bs new bitset4294967295;//第二种写法栈的空间有限对于很大的数据需要大量的内存空间应该通过堆来申请。其他同上面代码。 二、海量数据面试题 1️⃣给定100亿个整数设计算法找到只出现一次的整数 思路 使用两个位图来实现表示00(没有出现) - 01(出现一次) - 10 - 11 的情况后面两个是出现2个及2个以上本题是找到只出现一次的整数所以最终判断这个整数在不在的条件是两个位图映射的比特位是不是01有100亿个整数为了映射所有整数一个位图开辟的空间大小是512M即2的32次方个比特位两个合起来是占1G内存 代码 int main() {vectorint a{ 2,2,3,3,5,8,8,14,14,66 };bitset-1* bs1 new bitset-1;//指针bitset-1* bs2 new bitset-1;for (auto e : a){if (bs1-test(e) false bs2-test(e) false){bs2-set(e);//00-01}else if (bs1-test(e) false bs2-test(e) true){bs1-set(e);bs2-reset(e);//01-10}else{//}}for (size_t i 0; i -1; i){if (bs1-test(i) false bs2-test(i) true){cout i endl;// 5 66}}return 0; }2️⃣给两个文件分别有100亿个整数我们只有1G内存如何找到两个文件交集 思路 既然给两个文件那么也要用两个位图。100亿个整数跟前面一样一个位图也是512M两个位图刚好1G只需判断某个数据在两个位图是否存在即可如果两个位图的对应映射的比特位都是1就是交集反之有一个不是1或者两个都是0就不是交集 代码 int main() {vectorint a1{ 2,4,6,8,10,14,20 };vectorint a2{ 1,3,4,5,7,9,10,17 };bitset-1* bs1 new bitset-1;bitset-1* bs2 new bitset-1;for (auto e : a1){bs1-set(e);}for (auto e : a2){bs2-set(e);}for (size_t i 0; i -1; i){if (bs1-test(i) true bs2-test(i) true){cout i endl;// 4 10}}return 0; }3️⃣1个文件有100亿个int1G内存设计算法找到出现次数不超过2次的所有整数 思路 步骤同问题1在它的基础上增加了10-11的情况即出现3次和3次以上然后最后判断条件为出现1次和2次的数据打印出来 代码 int main() {vectorint a{ 2,4,4,5,5,5,7,9,9,9,9 };bitset-1* bs1 new bitset-1;bitset-1* bs2 new bitset-1;for (auto e : a){if (bs1-test(e) false bs2-test(e) false){bs2-set(e);//00-01 出现1次}else if (bs1-test(e) false bs2-test(e) true){bs1-set(e);bs2-reset(e);//01-10 出现2次}else if (bs1-test(e) true bs2-test(e) false){bs2-set(e);//10-11 出现3次}//3次以上}for (size_t i 0; i -1; i){if ( (bs1-test(i) false bs2-test(i) true)|| (bs1-test(i) true bs2-test(i) false)){cout i endl;// 2 4 7}}return 0; }
http://www.zqtcl.cn/news/72629/

相关文章:

  • 最新站群临清网站优化
  • wordpress仿站流程seo如何分析一个网站
  • 购物网站开发参考文献平面设计好找工作不
  • 精品网站建设费用磐石网络名气国内有多少家做网站的企业
  • 网站的特征简述网站建设的过程
  • 只用php做网站网站设计怎么保持风格一致
  • 天津 公司网站建设如何注册免费网站域名
  • 找个人给我做电影网站好黑龙江做网站的公司有哪些
  • 懂做网站怎么赚钱莆田市荔城区建设局网站
  • 自己做公众号和小说网站推广网站制作优化排名
  • 网站建设价格与哪些wordpress html5播放优酷
  • 深圳网站建设网络推广公司青柠海报设计网站
  • 海口哪里做网站公司开发前端和后端的区别
  • 河南省建设工程信息网站WordPress最好版本
  • 东川网站建设怎么建立一个文档
  • 北京网站建设兴田德润电话多少企业网站项目的流程
  • 怎么创办网站网站建设目的要求
  • 做网站凡科专业网站建设服务包括哪些
  • 网站开发的论文莱芜
  • 百度商桥代码后网站上怎么不显示网站列表设计
  • 男女做暖暖试看网站怎么在网站添加paypal
  • 响应式网站展示型做空调的网站
  • 如何让百度搜索到自己的网站413 request entity too large wordpress
  • 网站备案接入商名称温州谷歌优化公司
  • 陕西网站开发联系方式国家高新技术企业
  • 全网营销网站微信软文
  • 创办网站要多少钱游戏开发物语破解版
  • 免费主机空间免备案温州做网站优化
  • 深圳做生鲜食材的网站叫什么个人做网站流程
  • 宁波网站推广设计做网站搜索推广点击率太低怎么办