资源限制类题目解法,看这一篇就够了!

news2024/11/25 15:25:37

算法拾遗三十七资源限制类题目

      • 资源限制技巧汇总
        • 32位无符号整数的范围是0~4,294,967,295,现在有一个正好包含40亿个无符号整数的文件,可以使用最多1GB的内存,怎么找到出现次数最多的数
        • 32位无符号整数的范围是0~4294967295,现在又一个正好包含40亿个无符号整数的文件,所以在正哥范围中必然存在没出现过的数,可以使用最多1GB的内存,怎么找到所有未出现的数?
          • 【进阶】内存限制为3KB,但是只用找到一个没出现过的数即可
        • 有一个包含100亿个URL的大文件,假设每个URL占用64B,请找出其中所有重复的URL
        • 32位无符号整数,现在有40亿个无符号整数,可以使用最多1GB的内存,找出所有出现了两次的数
        • 现在有40亿个无符号整数,可以使用最多3K的内存,怎么找到10亿个整数的中位数(找上中位数)
        • 有一个10G大小的文件,每一行都装着这种类型的数字,整个文件是无序的,给你5G的内存空间,请你输出一个10G大小的文件,就是原文件所有数字排序的结果

资源限制技巧汇总

1)布隆过滤器用于集合的建立与查询,并可以节省大量空间
2)一致性哈希解决数据服务器的负载管理问题
3)利用并查集结构做岛问题的并行计算
4)哈希函数可以把数据按照种类均匀分流
5)位图解决某一范围上数字的出现情况,并可以节省大量空间
6)利用分段统计思想、并进一步节省大量空间7)利用堆、外排序来做多个处理单元的结果合并

32位无符号整数的范围是0~4,294,967,295,现在有一个正好包含40亿个无符号整数的文件,可以使用最多1GB的内存,怎么找到出现次数最多的数

如果将数全拿到内存,40亿个无符号整数占用空间大概为16GB,如果使用hash表估算,hash表使用多少内存和数字的个数无关,和到底出现了多少个不同的数字有关系。(如果40亿个数全是1,那么这个hash只占用8字节的空间,但是如果40亿个数都不一样,那么占用空间为32G,那么hash表空间会爆掉的)
如果1G的内存都来做hash表那么能装下多少记录?
基本上是一亿两千五百万条记录,可能还有一些其他的代价,那么就假设hash表只能装下一千万条记录。
假设40亿个数有四十亿种数。
步骤:
1、首先让40亿个数除以1千万,得到400
2、这40亿个数每一个数得到一个hash值然后让它模400,利用hash函数的性质让数据几乎均分的放到各自的hash槽中
3、hash函数的性质,同一种数字只会进入同一个文件
4、这样一来搞出了400个文件,每个文件数字的种数均分差不多一千万
5、然后则需要对0号文件使用hash表求出出现次数最多的数字,然后释放掉hash表,对1号文件使用hash表求出出现次数最多的数字,依次类推找出400个文件中出现次数最多的数字。

32位无符号整数的范围是0~4294967295,现在又一个正好包含40亿个无符号整数的文件,所以在正哥范围中必然存在没出现过的数,可以使用最多1GB的内存,怎么找到所有未出现的数?

应该使用位图来解决这类问题,定义一个bit数组那么我数组八位才占用一个字节,那么就准备2的32次方个长度的bit数组,那么一个才占用2的32次方除以八个字节,1G内存能解决当前问题,但是前提是bit数组,如何实现bit数组,拿基础类型去拼接。
当我申请一个长度为10的bit数组的时候,那么就等同于我申请了320长度的bit,具体第i号bit设置方式,用i除以32(知道i在arr中的哪个位置)然后再用i对32取模(看看是这个数字中的第几位)
解法:
准备好一个大位图,1G内存可以拿下,遍历整个文件,将数字在整个大位图上面将数字对应的位图表示做标记,最后找没被标记的则解决问题。

【进阶】内存限制为3KB,但是只用找到一个没出现过的数即可

3Kb的空间都拿来做无符号的整型数组的话,则数组最大长度为750(300/4),那么我最终申请512长度的空间,将2的32次方范围均分512份,每一份统计一个范围,就必然能找到不满的范围,则只需要在不满的小范围里面去找那个数字没出现就ok了,在小范围里面再将数字范围划分为512份,一直划分下去最终找到一个没出现的次数。
如果只能申请有限几个变量?
在这里插入图片描述
则可以通过2分的方式将数字范围逐渐划分变小,最终把没出现的数给2分找出来。

有一个包含100亿个URL的大文件,假设每个URL占用64B,请找出其中所有重复的URL

先把大文件通过hash函数分割成小文件(如果小文件再大则继续hash分流到更小的文件),再从这些小文件里面去找有没有重复的URL(hash有相同的输入一定有相同的输出)

32位无符号整数,现在有40亿个无符号整数,可以使用最多1GB的内存,找出所有出现了两次的数

用两bit位信息表示一个数的出现次数,就是找数对应的两位bit位就解决了(0,1两个bit位的数字表示数字0出现的次数),

现在有40亿个无符号整数,可以使用最多3K的内存,怎么找到10亿个整数的中位数(找上中位数)

1,2,3,4 中2就是上中位数。
只要3KB,取512长度的无符号整数数组,所以将整个范围分成512份,每一份都能均分,然后统计每个范围出现了多少个数,一共40亿个数要找第20亿个数出现在哪个范围,比如说第一个范围a只有1亿个数,那么可以排除中位数绝对不在范围a,如果某个范围区间刚到20亿或者刚超过20亿,那么这个上中位数一定在那个范围区间。
(分段统计思想)

有一个10G大小的文件,每一行都装着这种类型的数字,整个文件是无序的,给你5G的内存空间,请你输出一个10G大小的文件,就是原文件所有数字排序的结果

利用大根堆结构处理,维持了一个门槛,大根堆里面维护一个数字,然后再维护那个数字出现的次数,当新来的数大于大根堆的根节点时则弹出大根堆的头节点,然后让新的数字进来,当堆空间不满足5G的内存空间大小时,将堆中元素输出,再通过临时变量t记录当前堆中最大的节点是哪个,再重新遍历10G的文件跳过小于等于t的元素重新构建新的大根堆从而解决问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/868012.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【VBA入门】WorkBook 对象 Name操作 宏录制筛选删除代码

VBA 入门 问题记录1 了解Excel工作簿、表格关系1 默认新建WorkBook2 新建WorkBook并命名工作表添加数据3新建带有指定数量工作表的工作簿 ActiveWorkbook.Names用法(1) 创建名称 (全局名称和局部名称) 宏录制验证删除可行性大招!!&#xff01…

Linux基础与应用开发系列九:各类系统函数与标准IO函数

open_close函数 OPEN函数 头文件&#xff1a; #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> 函数原型&#xff1a; 当文件存在时 int open(const char* pathname,int flags) 当文件不存在时 int open (const char* pathname,int f…

(黑客)自学误区

一、自学网络安全学习的误区和陷阱 1.不要试图先成为一名程序员&#xff08;以编程为基础的学习&#xff09;再开始学习 行为&#xff1a;从编程开始掌握&#xff0c;前端后端、通信协议、什么都学。 缺点&#xff1a;花费时间太长、实际向安全过渡后可用到的关键知识并不多…

【2023最新美团笔试题目分析】“求最多出现数字及次数“、坦克大战在线对战游戏(问题描述 + 示例代码 + 时间复杂度分析)

弃幼少嬉戏堕慢之心,而衎衎于进德修业之志。 🎯作者主页: 追光者♂🔥 🌸个人简介: 💖[1] 计算机专业硕士研究生💖 🌿[2] 2023年城市之星领跑者TOP1(哈尔滨)🌿 🌟[3] 2022年度博客之星人工智能领域TOP4🌟 🏅[4] 阿里云社区特邀专家博主

光致发光二极管光源——荧光效率检测系统

发光二极管&#xff08;LED&#xff09;光源已经逐步地取代传统光源&#xff0c;并在生产和生活中得以广泛应用。荧光粉在LED照明设备中起到了至关重要的作用&#xff0c;其功能为将转换芯片所产生的紫外或者蓝光&#xff0c;发射出目标颜色的光。近年来&#xff0c;人们为了提…

计算文本相似度

目录 Python中的difflib模块模块用法报告涉及的符号实现文本对比普通文本对比文本对比生成HTML报告 余弦相似度sklearn安装使用sklearn的余弦相似度词袋模型 Jaccard相似度编辑距离&#xff08;Levenshtein距离&#xff09;TF-IDFWord2VecDoc2VecBERT结论 Python中的difflib模块…

使用阿里云服务器搭建Discuz论坛网站教程基于CentOS系统

阿里云百科分享使用阿里云服务器建站教程&#xff0c;本文是搭建Discuz论坛&#xff0c;Discuz!是一款通用的社区论坛软件系统&#xff0c;它采用PHP和MySQL组合的基础架构&#xff0c;为您提供高效的论坛解决方案。本文介绍如何在CentOS 7操作系统的ECS实例上搭建Discuz! X3.4…

如何使用 ESP-01S 模块

如何使用 ESP-01S 模块 原始PDF文档 参考&#xff1a; 将 ESP-01 用作 WiFi shield的更好方法 (e-tinkers.com) How do I use ESP8266 ESP-01S WiFi Module with ESP-01S Adapter - Using Arduino / Programming Questions - Arduino Forum ESP-01S WiFi 模块 – 配置布线 -…

自动化测试是什么?自动化测试学什么?自动化测试面试题及答案?--看完后吊打面试官

一、前言 最近有童鞋和我抱怨&#xff0c;说网上很难搜到那些全面又合适的自动化测试面试题&#xff0c;这里根据我个人的经验以及收集整理的&#xff1a; 你没看错&#xff0c;不慌&#xff0c;慢慢来。 先从什么是自动化测试开始说起哈&#xff01; 二、什么是自动化测试&…

点淘的MCN机构申请详细入驻指南!

消费趋势的变化&#xff0c;来自消费人群的变化。 后疫情时代&#xff0c;经济复苏的反弹力度不足&#xff0c;人们开始怀疑我们正从前几年的消费升级&#xff0c;跌入消费降级的时代&#xff0c;但这并不能准确概括消费市场的变化。 仔细翻看各大奢侈品集团的财报&#xff0…

Android高通8.1 Selinux问题

1、最近客户提了一个需求&#xff0c;说要在user版本上面切分辨率&#xff0c;默认屏幕分辨率是2.5 k 执行adb shell指令之后变成 4k 然后adb shell wm size可以查看 2、一开始我能想到就是在文件节点添加权限&#xff0c;这里不管是mtk还是qcom&#xff08;高通平台&#xff…

MySQL中用什么数据类型存IP地址

提到IP地址(IPv4)&#xff0c;我们脑子里肯定立马浮现类似于192.168.0.1、127.0.0.1这种常见的IP地址&#xff0c;然后结合这个问题“MySQL中用什么数据类型存IP地址&#xff1f;”&#xff0c;于是乎脱口而出用char字符串类型存储。 然后再仔细想想发现&#xff0c;这个IP地址…

揭秘程序员和技师的7大共同点,最后一点绷不住了

大家好&#xff0c;这里是程序员晚枫&#xff0c;周末朋友出去放松回来&#xff0c;给我分析了一下程序员和技师的7个相同点&#xff0c;尤其是最后一点让我彻底绷不住了&#xff01; 我也分享给大家。 1、都有工号。98号技师&#xff0c;380号技师大家都很熟悉了&#xff0c…

阿里云服务器手动搭建FTP教程(Windows操作系统)

阿里云百科介绍使用阿里云服务器搭建FTP教程&#xff0c;云服务器为Windows操作系统&#xff0c;当需要远程连接Windows实例进行文件传输时&#xff0c;可以通过搭建FTP站点实现。本文将介绍如何在Windows实例中搭建FTP站点。 目录 准备工作 步骤一&#xff1a;添加IIS以及F…

ssm亚盛汽车配件销售业绩管理统源码和论文PPT

ssm亚盛汽车配件销售业绩管理统源码和论文PPT007 开发工具&#xff1a;idea 数据库mysql5.7(mysql5.7最佳) 数据库链接工具&#xff1a;navcat,小海豚等 开发技术&#xff1a;java ssm tomcat8.5 研究的意义 汽车配件销售类企业近年来得到长足发展,在市场份额不断扩大同时…

震惊!有人使用C语言实现三子棋游戏~

大家好&#xff0c;欢迎观看Mr.kanglong的CSDN博客&#xff0c;今天和大家讨论的是如何使用C语言来实现三子棋游戏。相信大家儿时或多或少玩过三子棋游戏&#xff0c;那么怎么用C语言实现这样一个游戏呢&#xff1f;且听亢龙娓娓道来~ 目录 三子棋介绍 游戏效果 实现代码 gam…

AIGC技术揭秘:探索火热背后的原因与案例

文章目录 什么是AIGC技术&#xff1f;为何AIGC技术如此火热&#xff1f;1. 提高效率与创造力的完美结合2. 拓展应用领域&#xff0c;创造商业价值3. 推动技术创新和发展 AIGC技术案例解析1. 艺术创作&#xff1a;生成独特的艺术作品2. 内容创作&#xff1a;实时生成各类内容3. …

电流的测量(反馈电流表)

另一方面&#xff0c;反馈电流表使用不同的方法来产生电流测量&#xff08;见图 3&#xff09;。他们使用有源跨阻放大器将电流转换为电压读数。电压输出是电流输入的倒数乘以反馈电阻器 R F的值。 V输出 -I输入* R F 图 3. 反馈电流表方法使用有源跨阻放大器将电流转换为…

uniapp 用 hbuilderx下载 uview

uView2.0重磅发布&#xff0c;利剑出鞘&#xff0c;一统江湖 - DCloud 插件市场 1.uniapp官网下载资源 2按下载 3.官网安装文档 要按 这个红色圈错了 然后看他的配置步骤 第四easycom 就可以 不用配了

【正点原子STM32连载】 第二章 APM32简介摘自【正点原子】APM32F407最小系统板使用指南

1&#xff09;实验平台&#xff1a;正点原子stm32f103战舰开发板V4 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id609294757420 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html# 第二…