华为OD机试2025C卷-内存资源分配[100分]( Java _ Python3 _ C++ _ C语言 _ JsNode _ Go)实现100%通过率
个人主页深夜coding算法 专栏系列2026年华为最新OD机试题库详解 一次订阅永久解锁 | 持续更新100篇 | 6语言全覆盖文章目录❄️前言☀️一题目描述 题目名称 题目内容 输入描述 输出描述 示例☀️二解题思路☀️三代码实现CJavaPython3C语言JavaScriptGo☀️四复杂度分析⭐ 五易错点坑1分配时优先地址最小坑2RELEASE 时找不到地址共勉❄️前言内存资源分配这题本质是在一个固定大小的存储里模拟分配和释放的操作。考的是对空闲块的管理——用数组/链表维护哪些区间还没被占分配时找第一个够大的块给它。☀️一题目描述 题目名称内存资源分配 题目内容有一个简易的内存池内存总大小为M字节编号 0 到 M-1。支持两种操作REQUESTN申请 N 字节的连续内存返回分配到的起始地址。优先分配地址最小的空闲块。如果没有足够大的连续空闲块返回-1RELEASEX释放以地址 X 为起始的已分配内存块 输入描述第一行整数M内存总大小接下来若干行每行一个操作直到输入结束 输出描述对每个REQUEST操作输出分配的起始地址或-1 示例输入 100 REQUEST10 REQUEST20 RELEASE0 REQUEST8 输出 0 10 0☀️二解题思路用数组mem[i]标记每个字节是否已分配。REQUEST 时扫描找连续 N 个空闲字节RELEASE 时根据起始地址找到对应块并释放。☀️三代码实现C#includeiostream#includestring#includevector#includemapusingnamespacestd;intmain(){intM;cinM;cin.ignore();vectorboolused(M,false);mapint,intallocs;// start - sizestring line;while(getline(cin,line)){if(line.rfind(REQUEST,0)0){intNstoi(line.substr(8));intstart-1;for(inti0;iM-N;i){booloktrue;for(intj0;jN;j)if(used[ij]){okfalse;break;}if(ok){starti;break;}}if(start!-1){for(intj0;jN;j)used[startj]true;allocs[start]N;}coutstartendl;}elseif(line.rfind(RELEASE,0)0){intXstoi(line.substr(8));if(allocs.count(X)){for(intj0;jallocs[X];j)used[Xj]false;allocs.erase(X);}}}}Javaimportjava.util.*;publicclassMain{publicstaticvoidmain(String[]args){ScannerscnewScanner(System.in);intMsc.nextInt();sc.nextLine();boolean[]usednewboolean[M];MapInteger,IntegerallocsnewHashMap();while(sc.hasNextLine()){Stringlinesc.nextLine();if(line.startsWith(REQUEST)){intNInteger.parseInt(line.substring(8));intstart-1;for(inti0;iM-N;i){booleanoktrue;for(intj0;jN;j)if(used[ij]){okfalse;break;}if(ok){starti;break;}}if(start!-1){for(intj0;jN;j)used[startj]true;allocs.put(start,N);}System.out.println(start);}elseif(line.startsWith(RELEASE)){intXInteger.parseInt(line.substring(8));if(allocs.containsKey(X)){for(intj0;jallocs.get(X);j)used[Xj]false;allocs.remove(X);}}}}}Python3Mint(input())used[False]*M allocs{}importsysforlineinsys.stdin:lineline.strip()ifline.startswith(REQUEST):Nint(line[8:])start-1foriinrange(M-N1):ifnotany(used[i:iN]):startibreakifstart!-1:forjinrange(start,startN):used[j]Trueallocs[start]Nprint(start)elifline.startswith(RELEASE):Xint(line[8:])ifXinallocs:forjinrange(X,Xallocs[X]):used[j]Falsedelallocs[X]C语言#includestdio.h#includestring.hintmain(){intM,used[1024]{0},allocs[1024]{0};scanf(%d\n,M);charline[128];while(fgets(line,sizeof(line),stdin)){if(strncmp(line,REQUEST,8)0){intN,start-1;sscanf(line8,%d,N);for(inti0;iM-N;i){intok1;for(intj0;jN;j)if(used[ij]){ok0;break;}if(ok){starti;break;}}if(start!-1){for(intj0;jN;j)used[startj]1;allocs[start]N;}printf(%d\n,start);}elseif(strncmp(line,RELEASE,8)0){intX;sscanf(line8,%d,X);if(allocs[X]){for(intj0;jallocs[X];j)used[Xj]0;allocs[X]0;}}}}JavaScriptconstinputrequire(fs).readFileSync(0,utf-8).trim().split(\n);constMinput[0];constusedArray(M).fill(false);constallocsnewMap();for(letk1;kinput.length;k){constlineinput[k];if(line.startsWith(REQUEST)){constNline.slice(8);letstart-1;for(leti0;iM-N;i){letoktrue;for(letj0;jN;j)if(used[ij]){okfalse;break;}if(ok){starti;break;}}if(start!-1){for(letj0;jN;j)used[startj]true;allocs.set(start,N);}console.log(start);}elseif(line.startsWith(RELEASE)){constXline.slice(8);if(allocs.has(X)){for(letj0;jallocs.get(X);j)used[Xj]false;allocs.delete(X);}}}Gopackagemainimport(bufio;fmt;os;strconv;strings)funcmain(){scanner:bufio.NewScanner(os.Stdin)scanner.Scan()M,_:strconv.Atoi(scanner.Text())used:make([]bool,M)allocs:map[int]int{}forscanner.Scan(){line:scanner.Text()ifstrings.HasPrefix(line,REQUEST){N,_:strconv.Atoi(line[8:])start:-1fori:0;iM-N;i{ok:trueforj:0;jN;j{ifused[ij]{okfalse;break}}ifok{starti;break}}ifstart!-1{forj:0;jN;j{used[startj]true}allocs[start]N}fmt.Println(start)}elseifstrings.HasPrefix(line,RELEASE){X,_:strconv.Atoi(line[8:])ifn,ok:allocs[X];ok{forj:0;jn;j{used[Xj]false}delete(allocs,X)}}}}☀️四复杂度分析指标数值时间复杂度O(M * 操作数)空间复杂度O(M)⭐ 五易错点坑1分配时优先地址最小扫描时从地址 0 开始找到第一个就停——这就是最优的。坑2RELEASE 时找不到地址如果释放的地址没有对应分配记录应忽略不要报错。共勉OD机试必考模拟题这道内存分配题学会了类似的时间片调度、资源池管理就都能做。关于本专栏一次订阅永久解锁全部100篇真题详解6语言全覆盖Java | Python3 | C | C语言 | JsNode | Go

相关新闻

MES制造执行系统:半导体FAB的信息中枢到底管什么

MES制造执行系统:半导体FAB的信息中枢到底管什么

一、问题背景:FAB一天产生几个TB的数据,但有多少被真正用起来了?一个先进FAB里到底有多少数据?给大家一个直观的概念: • 一台CVD设备每秒产生约 50个传感器读数(温度、压力、RF功率、气体流量等&#xff0…

2026/6/28 1:03:05阅读更多 →
Page Agent:驻留网页的 GUI 代理,多场景轻松集成!

Page Agent:驻留网页的 GUI 代理,多场景轻松集成!

Page Agent:驻留在网页中的 GUI 代理借助自然语言控制网页界面。🌐 英文 | 中文 🚀 演示 | 📖 文档 | 📢 Hacker News 讨论 | 𝕏 在 X 上关注[page - agent - demo - 0227.mp4](未给出链接&…

2026/6/28 0:08:01阅读更多 →
2026保姆级教程:PDF转Excel免费好用软件,电脑本地无水印在线工具全操作指南

2026保姆级教程:PDF转Excel免费好用软件,电脑本地无水印在线工具全操作指南

日常办公经常需要把报表、票据 PDF 导出成 Excel 表格,2026 年市面上可用的转换工具分为微信小程序、在线网页工具、电脑本地软件、Office 自带功能四大类,每一类都有适配不同设备 Windows、Mac 的操作方案,涵盖免费无水印、离线本地处理、批…

2026/6/28 0:08:01阅读更多 →
手搓一台基站让附近手机主动连接

手搓一台基站让附近手机主动连接

这是一份专为 零基础小白 设计的树莓派 2G 短信基站教程。全程使用开源 OpenBTS 框架,硬件成本约 500,12 小时即可跑通。📦 一、硬件清单(按淘宝/京东常见型号)部件推荐型号作用备注树莓派Pi 3B 或 Pi 4(4G…

2026/6/28 4:43:20阅读更多 →
2026年盘锦大米厂商TOP10,你选对了吗?

2026年盘锦大米厂商TOP10,你选对了吗?

盘锦大米以其独特的口感和优良品质,在国内大米市场中享有盛誉。随着消费者对健康饮食的重视,选择一家可靠的盘锦大米厂商变得尤为重要。本文将围绕“2026年盘锦大米厂商TOP10”这一主题,从业务需求、厂商类型、质量控制等方面进行详细阐述&am…

2026/6/28 4:43:20阅读更多 →
【Springboot毕设全套源码+文档】基于web平台的实验室耗材管理系统设计与实现的设计与实现(丰富项目+远程调试+讲解+定制)

【Springboot毕设全套源码+文档】基于web平台的实验室耗材管理系统设计与实现的设计与实现(丰富项目+远程调试+讲解+定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/6/28 4:43:20阅读更多 →
Agent-实战经验总结(二)

Agent-实战经验总结(二)

工具颗粒度设计在设计工具函数时,每个函数的职能需要适当把控,如果工具写得很碎,分成了很多个函数,Agent在使用时就需要调用很多次工具,每个都单独调用,轮次会变多,成本也高。如果很多个都写在一…

2026/6/28 4:43:20阅读更多 →
VM17安装Ubuntu24.04.4教程

VM17安装Ubuntu24.04.4教程

参考文章 https://blog.csdn.net/weixin_52799373/article/details/139055794 https://blog.csdn.net/qq_32795773/article/details/156850244 下载镜像地址 ubuntu-releases-24.04.4安装包下载-开源镜像站-阿里云 我们这里选择安装Ubuntu24.04.04版本的桌面端ISO镜像 新建…

2026/6/28 4:38:20阅读更多 →
AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

6个月前的2025年12月,Boris Cherny 公开宣布自己卸载了 IDE。一时间,Vibe Coding 成了全行业最热的话题。6个月后,当我们回过头来拉一份真实账本,发现事情远没有"一句话生成一个App"那么浪漫。本文从产品经理和研发两个…

2026/6/28 0:08:01阅读更多 →
审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

引言:审计结束三个月了,审计员的权限还没关某城商行每年按照监管要求开展至少一次数据安全审计。审计期间,内审部门需要抽样检查各类业务数据——交易流水、客户信息、员工操作日志、权限配置记录。这些数据分布在不同系统中,审计…

2026/6/28 0:08:01阅读更多 →
AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

6个月前的2025年12月,Boris Cherny 公开宣布自己卸载了 IDE。一时间,Vibe Coding 成了全行业最热的话题。6个月后,当我们回过头来拉一份真实账本,发现事情远没有"一句话生成一个App"那么浪漫。本文从产品经理和研发两个…

2026/6/28 0:08:01阅读更多 →
审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

引言:审计结束三个月了,审计员的权限还没关某城商行每年按照监管要求开展至少一次数据安全审计。审计期间,内审部门需要抽样检查各类业务数据——交易流水、客户信息、员工操作日志、权限配置记录。这些数据分布在不同系统中,审计…

2026/6/28 0:08:01阅读更多 →