2016 - 2024

感恩一路有你

游戏内存遍历工具 挑战程序员同学,如何只用2GB内存从20/40/80亿个整数中找到出现次数最多的数?

浏览量:2898 时间:2021-04-06 05:20:19 作者:admin

挑战程序员同学,如何只用2GB内存从20/40/80亿个整数中找到出现次数最多的数?

1、4字节表示的整数数为2^32≈40亿,2字节表示的无符号整数数为2^16≈60000。

2、2G=2^31b≈20亿字节。

3、为了找出出现次数最多的数字,应记录每个数字的出现次数。最快的方法是记录每个数字在内存中出现的次数。记录方法是记录相应的存储器地址数和相应地址的存储器单元数。但是,2G内存只能记录20亿字节的数字,如果每个数字的出现次数大于255则会发生溢出,没有风险。因此,这种方案是不可取的。

4、这样,磁盘上只能记录每次出现的次数。这样,就在磁盘上创建了一个16g文件。每4个字节对应一个整数,可以对应40亿个整数。用于记录相应整数的个数。

1. 初始化文件。

2. 依次读取数据并用无符号整数记录在磁盘文件中。如果发生溢出,则该数字是次数最多的数字。

3. 从文件中读取每个数字的次数,用变量a记录最高次数,用变量B记录最高次数的数据,用文件依次记录最高次数的数据。当最大次数增加时,a1和B被设置为1,并且该数字被写入文件中。当出现相同次数的数字b1时,该数字被写入文件的相应位置,直到全部被读取为止。

所以您根本不需要2G内存。

给你一个含有1亿个QQ号码的文件,如何快速的查找某个QQ号码?

请记住,您可以制作一个程序,例如查找定点单词。我只是不记得了。人们真的很蠢。

c语言的指针可以遍历内存吗?

理论上可以,但在实际操作中会出现问题,因为目前的编译器运行在操作系统上,是在操作系统的统一控制下。每次编译和运行程序时,操作系统都会为当前程序分配一段虚拟内存。在代码中写入的内存地址是基于这片虚拟内存的,并且不能超过虚拟内存访问其他区域的限制。

c#在内存中保存多个字典实例影响性能大还是只保留一个,然后每次取的时候遍历字典对性能影响大?

如果字典引用系统.集合.通用. 字典类型,因此无需担心性能。链表的性能比遍历要好得多。

相反,如果业主对存储项目有很大的需求,他应该担心容量。它只能存储4700万个键值对,上限约为2GB(与底层CLR相关)。

游戏内存遍历工具 华为手机内存扩容教程 内存遍历工具使用教程

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。