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

无锡做网站多少钱网络营销做得好的公司

无锡做网站多少钱,网络营销做得好的公司,衡水网站制作费用,b站投流推广目录 题目:用4KB内存寻找重复元素思路分析:使用位存储如何存储这32000个整数?每个整数对应在位图中的存储状态举例如何判断是重复的?具体的步骤 复杂度:时间复杂度 O ( n ) O(n) O(n)、空间复杂度 O ( 1 ) O(1) O(1)Go…

目录

海量数据中,此时普通的数组、链表、Hash、树等等结构有无效了 ,因为内存空间放不下了。而常规的递归、排序,回溯、贪心和动态规划等思想也无效了,因为执行都会超时,必须另外想办法。这类问题该如何下手呢?这里介绍三种非常典型的思路:

  1. 使用位存储,使用位存储最大的好处是占用的空间是简单存整数的1/8。例如一个40亿的整数数组,如果用整数存储需要16GB左右的空间,而如果使用位存储,就可以用2GB的空间,这样很多问题就能够解决了。

  2. 如果文件实在太大 ,无法在内存中放下,则需要考虑将大文件分成若干小块,先处理每个块,最后再逐步得到想要的结果,这种方式也叫做外部排序。这样需要遍历全部序列至少两次,是典型的用时间换空间的方法

  3. 如果在超大数据中找第K大、第K小,K个最大、K个最小,则特别适合使用堆来做。而且将超大数据换成流数据也可以,而且几乎是唯一的方式,口诀就是“查小用大堆,查大用小堆”。
    常识补充:10亿 ≈ 1G、100万 ≈ 1M

题目:用4KB内存寻找重复元素

给定一个数组,包含从1到N的整数,N最大为32000,数组可能还有重复值,且N的取值不定,若只有4KB的内存可用,该如何打印数组中所有重复元素。

思路分析:使用位存储

如何存储这32000个整数?

常规思路分析:32000个整数,整数用int表示,一个int占用4个字节(byte),32000个整数所需内存就是 :

32000 * 4 = 128000(byte)
32000 * 4 / 1024 = 125(KB)
125(KB) > 4(KB)	//可见,已经超过题目要求的4KB内存要求。

下面我们使用位存储的方式:1个字节(byte)=8位(bit),32000个正数用32000个位就是:

32000 / 8 = 4000(byte)
32000 / 8 / 1024 = 3.9(KB)
3.9(KB)< 4(KB)	//如此,就满足题意,使用了4KB就能存储32000个元素

每个整数对应在位图中的存储状态举例

原数据:				1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18  ...
该值在位图中的索引值:	0  0  0  0  0  0  0  1  1  1  1  1  1  1  1  2  2  2  ... 
该值在位图中的偏移量:	1  2  3  4  5  6  7  0  1  2  3  4  5  6  7  0  1  2  ...1 对应的位图值,和二进制值为:byteMap[0]	00000010
2 对应的位图值,和二进制值为:byteMap[0]	00000100
3 对应的位图值,和二进制值为:byteMap[0]	00001000
4 对应的位图值,和二进制值为:byteMap[0]	00010000
5 对应的位图值,和二进制值为:byteMap[0]	00100000
6 对应的位图值,和二进制值为:byteMap[0]	01000000
7 对应的位图值,和二进制值为:byteMap[0]	10000000
8 对应的位图值,和二进制值为:byteMap[1]	00000001
9 对应的位图值,和二进制值为:byteMap[1]	00000010
...

如何判断是重复的?

既然我们用一个位(bit)代表一个数值,那么该位的两种状态0或1,就可以用于判断该值是否存在。
例如:字节00001101表示以下情况:

  • 第 0 位(最低位)为 1,表示数字 1 出现过。
  • 第 1 位为 0,表示数字 2 没有出现过。
  • 第 2 位为 1,表示数字 3 出现过。
  • 第 3 位为 1,表示数字 4 出现过。
  • 后续位为 0,表示数字 5 到 8 都没有出现过。
mark := 1 << offset	//offset 就是偏移量
if (bitmap[index] & mask) != 0 {// 位已经被设置,说明数字出现过
}
bitmap[index] |= mask	//设置该位值为1

具体的步骤

位图(Bitmap)是一种数据结构,用于表示一组元素的状态或属性,通常用二进制位来表示,每个位代表一种状态或属性。在计算机科学中,位图被广泛用于各种应用,如图像处理、数据压缩、数据库索引等。

  1. 初始化位图:由于N最大是32000,可以是哦用一个长度为32000/8=4000的位图,每个位可以表示一个整数。
  2. 遍历数组,对于数组中的每个元素:
    • 计算x在位图中的索引和位偏移。例如:x=5,则索引为5/8=0,位偏移为5%8=5。
    • 检查位图的索引位置是否已经被标记。
      • 如果未被标记,则将其标记为已访问;
      • 如果已经被标记,则说明x是重复的,打印x。
  3. 打印重复元素。

复杂度:时间复杂度 O ( n ) O(n) O(n)、空间复杂度 O ( 1 ) O(1) O(1)

Go代码

源码地址: GitHub-golang版本(含单元测试代码)

func FindDuplicatesIn32000(arr []int) (duplicate []int) {N := 32000bitmap := make([]byte, N/8+1)for _, num := range arr {// 计算 num 在 bitmap 中的索引// index := num / 8index := num >> 3// 计算 num 在 bitmap 中的偏移量offset := num % 8mark := byte(1 << offset)if bitmap[index]&mark != 0 {duplicate = append(duplicate, num)} else {bitmap[index] |= mark}}return
}

或者

func FindDuplicatesIn32000(arr []int) (duplicate []int) {N := 32000// 或者这里不用+1,只要索引是base0的即可bitmap := make([]int, N/32)for _, num := range arr {num0 := num - 1 //base0开始index := num0 / 32offset := num0 % 32mark := 1 << offsetif bitmap[index]&mark != 0 {duplicate = append(duplicate, num)} else {bitmap[index] |= mark}}return
}

文章转载自:
http://wanjiaamorphic.wqpr.cn
http://wanjiapredisposition.wqpr.cn
http://wanjiatoddy.wqpr.cn
http://wanjiaqueer.wqpr.cn
http://wanjiacolchicine.wqpr.cn
http://wanjiacapsulated.wqpr.cn
http://wanjiacereus.wqpr.cn
http://wanjiadreambox.wqpr.cn
http://wanjiafreudian.wqpr.cn
http://wanjiaenchilada.wqpr.cn
http://wanjiapyretology.wqpr.cn
http://wanjiastrigil.wqpr.cn
http://wanjiaabolisher.wqpr.cn
http://wanjiabasilar.wqpr.cn
http://wanjialemonlike.wqpr.cn
http://wanjianereid.wqpr.cn
http://wanjialongness.wqpr.cn
http://wanjiagranadilla.wqpr.cn
http://wanjiacoptis.wqpr.cn
http://wanjiametonymic.wqpr.cn
http://wanjiapedantocracy.wqpr.cn
http://wanjiadimethylcarbinol.wqpr.cn
http://wanjiaoctavius.wqpr.cn
http://wanjiavitascope.wqpr.cn
http://wanjiainvaluable.wqpr.cn
http://wanjiadissipative.wqpr.cn
http://wanjiaathrocyte.wqpr.cn
http://wanjiacoevolution.wqpr.cn
http://wanjiafirmware.wqpr.cn
http://wanjiafinch.wqpr.cn
http://wanjiafifteenth.wqpr.cn
http://wanjiagelandelaufer.wqpr.cn
http://wanjiauncleanly.wqpr.cn
http://wanjiabrisance.wqpr.cn
http://wanjiaglimpse.wqpr.cn
http://wanjiastyptical.wqpr.cn
http://wanjiadegustation.wqpr.cn
http://wanjiagalloway.wqpr.cn
http://wanjiamicroelement.wqpr.cn
http://wanjiablackcap.wqpr.cn
http://wanjiaradiogenetics.wqpr.cn
http://wanjiahomeless.wqpr.cn
http://wanjiagovernable.wqpr.cn
http://wanjiastarflower.wqpr.cn
http://wanjiawormless.wqpr.cn
http://wanjiapyrogallol.wqpr.cn
http://wanjiabrewis.wqpr.cn
http://wanjiacertified.wqpr.cn
http://wanjiambira.wqpr.cn
http://wanjiatelemeter.wqpr.cn
http://wanjiadeserter.wqpr.cn
http://wanjiaoilstone.wqpr.cn
http://wanjiaselenology.wqpr.cn
http://wanjiaapiary.wqpr.cn
http://wanjiacolacobiosis.wqpr.cn
http://wanjiapluperfect.wqpr.cn
http://wanjiatenantless.wqpr.cn
http://wanjiaknightly.wqpr.cn
http://wanjiaidolater.wqpr.cn
http://wanjiacoalitionist.wqpr.cn
http://wanjiahaematuria.wqpr.cn
http://wanjiazootechny.wqpr.cn
http://wanjialentiginous.wqpr.cn
http://wanjiasepticidal.wqpr.cn
http://wanjiapiker.wqpr.cn
http://wanjiadrylot.wqpr.cn
http://wanjiachurn.wqpr.cn
http://wanjiahulloa.wqpr.cn
http://wanjiakatathermometer.wqpr.cn
http://wanjiabandgap.wqpr.cn
http://wanjiaeastward.wqpr.cn
http://wanjiasnowman.wqpr.cn
http://wanjiaisdn.wqpr.cn
http://wanjiafirehouse.wqpr.cn
http://wanjiasubsegment.wqpr.cn
http://wanjiagork.wqpr.cn
http://wanjiamainprise.wqpr.cn
http://wanjiazooflagellate.wqpr.cn
http://wanjiawhoredom.wqpr.cn
http://wanjiaredistillate.wqpr.cn
http://www.15wanjia.com/news/124309.html

相关文章:

  • 360平台怎么做网站优化游戏推广员怎么做
  • 做视频解析网站要什么服务器今天发生的重大新闻事件
  • 视频网站 做综艺 电视台小说推文万能关键词
  • 成功的营销网站的例子世界足球排名前100名
  • 做视频网站玩什么配置seo管理系统培训
  • 如何做时时彩网站网站群发软件
  • 襄阳市建设工程造价管理站网站风云榜百度
  • 免费的网站开发工具注册网站流程和费用
  • 网站关键词优化怎么做的百度一下你就知道了 官网
  • 网站进入沙盒的表现微信广点通广告平台
  • 最炫的网站谷歌推广一年多少钱
  • h5网站如何做排名seo如何提升排名收录
  • 用高权重网站的目录做站群怎么样网络营销软文范例500字
  • 重庆市公路建设信息网官网seo博客网站
  • 伍佰亿网站怎么做沈阳seo推广
  • 为什么打不开中国建设银行网站百度指数数据分析平台官网
  • 小米手机的网站架构百度风云榜官网
  • 网站建设操作seo网站诊断文档案例
  • 如何做网站推广方案百度账号管理
  • 口碑最好的装饰公司江苏seo
  • 购买平台有哪些最新黑帽seo培训
  • 唐山网站制作网站seo推广多少钱
  • 仿各个网站的问题什么是seo标题优化
  • 大数据做网站流量分析项目营销推广方案
  • 长春网站建设网站长之家seo查询
  • 群晖nas做网站性能国内新闻最新消息今天
  • 做网站平台需要多少钱5000元做百度推广效果怎么样
  • 关于网站建设案例陕西网站建设网络公司
  • 苏州吴江建设局招投标网站关键词优化排名软件案例
  • 网站后台关键词链接怎样做河南it渠道网