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

40亿非负整数中找到出现两次的数和所有数的中位数

题目:

32为无符号整数的范围是0~4294967295,现在有40亿个无符号整数,可以使用最多1GB的内存,找出所有出现了两次的数。

补充题目:

可以使用最多10MB的内存,怎么找到这40亿整数的中位数。

解答:

对于原问题,可以用bit map的方式来表示数出现的情况。具体地说,是申请一个长度为4294967295*2的bit类型的数组bitArr,用2个位置表示一个数出现的词频,1B占用8个bit,所以长度为4294967295*2的bit类型的数组占用1GB空间。怎么使用这个bitArr数组呢?遍历这40亿个无符号数,如果初次遇到num,就把bitArr[num*2 + 1]和bitArr[num*2]设置为01,如果第二次遇到num,就把bitArr[num*2 + 1]和bitArr[num*2]设置为10,如果第三次遇到num,就把bitArr[num*2 + 1]和bitArr[num*2]设置为11。以后再遇到num,发现此时bitArr[num*2 + 1]和bitArr[num*2]已经被设置为11,就不再做任何设置。遍历完成后,再次遍历bitArr,如果发现bitArr[i*2 + 1]和bitArr[i*2]设置为10,那么i就是出现了两次的数。

相关文章:

  • 视觉-和-语言导航的综述:任务、方法和未来方向
  • 20. 自动化测试框架开发之Excel配置文件的IO开发
  • 雷电模拟器安装 KitsuneMagisk (原 Magisk-delta)
  • 当多云管理陷入泥潭,一体化平台如何破局?
  • PCB设计如何用电源去耦电容改善高速信号质量
  • 32、跨平台咒语—— React Native初探
  • leetcode3371. 识别数组中的最大异常值-medium
  • 扫描网络内所有设备的IP地址
  • linux kernel 编译
  • ONIE安装NOS操作说明
  • 5.19 打卡
  • 【C#】用 DevExpress 创建带“下拉子表”的参数表格视图
  • 利用SAMap整合跨物种单细胞/空间转录组数据
  • 简单光学成像技术及其研究进展
  • 用户行为日志分析的常用架构
  • 【Pandas】pandas DataFrame mode
  • 《打造第二大脑》
  • 代购商城系统可以解决哪些重点难题?
  • FastAPI自定义异常处理:优雅转换Pydantic校验错误
  • java+selenium专题->启动浏览器下篇
  • 旅马大熊猫“福娃”“凤仪”平安回国
  • 第十一届世界雷达展开幕,尖端装备、“大国重器”集中亮相
  • 从近200件文物文献里,回望光华大学建校百年
  • 白玉兰奖征片综述丨海外剧创作趋势观察:跨界·融变·共生
  • 我国城市规划“全面体检”套餐出台,城市体检将逐步与供地计划等挂钩
  • 最高人民法院原副院长唐德华逝世,享年89岁