2016 - 2024

感恩一路有你

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

浏览量:2494 时间:2021-03-25 20:38:37 作者: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内存。

java输入一个字符串,可包含中文,要求查找其中出现次数最多的字符,并将其出现次数一并输出?

导入java.util.HashMap文件

导入java.util.Iterator

导入java.util.Set

public class Test5

{

public static void main(String[]args)

{

HashMap map=new HashMap()

for(int k=0k&长度)

{

如果(地图。获取(args[k])==null)

{地图输入(args[k],新整数(1))

}

else

{

Integer in=(整数)地图。获取(args[k])

in=新整数(in.int值() 1)

地图输入(args[k],in)

}

集=映射密钥集()

for(Iterator it=集合迭代器() 它。下一个())

{

字符串键=(字符串)它。下一个()

整数值=(整数)地图。获取(键)系统输出打印(key“:”value)

}]}]试试看

今年大三了,学了一年多的Java,可是都在说go用的越来越多了,很多人都已经转go了,请问我该怎么办?

14年来,有人说Java将要消亡,那时Java仍然是中国的主流。17年来,有人说Java真的不行了,那时Java还是中国的主流。19年来,有人说Java不再好了,他们都在用python。然而,Java和C仍然是中国的主流。最后,在2020年,另一批不处于it地位的人说Java已经不好了,go和python是主流。你相信有一群培训机构吗???你知道java生态有多好吗?你知道有多少java开发需要维护吗?你知道一家公司突然改变技术方向要花多少钱吗?

java和python哪个好 java java是什么

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