BAT面试题——海量整数,找出不重复整数

在海量整数(2.5亿)中寻找不重复的数字,当内存充足时,利用Python字典记录每个数字出现次数,只保留value为1的key。若内存不足,采用bool数组,用2位表示次数,00表示未出现,01表示出现一次,11表示出现多次。这种方法只需约0.5GB内存。
摘要由CSDN通过智能技术生成

海量数据
海量数据时代,不是谁都可以一口闷。
海量

题目:在2.5亿个整数中,找出不重复的整数(注,内存不足以容纳这2.5亿个整数)。

构建测试数据

返回顶部

# 构建一个测试数据集:随机生成10000个(-20000, 20000)的整数,以字符串格式存入bigdata中
import random


for i in range(10000):
    with open('bigdata', 'a') as file:
        file.write(str(random.randint(-20000, 20000)) + '\n')

方法一(内存充足):用python字典结构:

返回顶部
在内存充足的情况下,使用python中的字典结构。
对2.5亿个数中的每一个数,出现一次,字典对应的值+1。
最后遍历字典,找出value为1的所有key。

int_dict = {
   }  # 整数字典,整数为key,次数为value
def dict_int():
    with open('bigdata') as file
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值