华为OD机试真题B卷 Java 实现【内存资源分配】

news2024/11/24 1:56:04

在这里插入图片描述

一、题目描述

有一个简易内存池,内存按照大小粒度分类,每个粒度有若干个可用内存资源,用户会进行一系列内存申请,需要按需分配内存池中的资源,返回申请结果成功失败列表。

分配规则如下:

  1. 分配的内存要大于等于内存的申请量,存在满足需求的内存就必须分配,优先分配粒度小的,但内存不能拆分使用;
  2. 需要按申请顺序分配,先申请的先分配,有可用内存分配则申请结果为true;
  3. 没有可用则返回false;

注意:不考虑内存释放。

二、输入描述

输入两行字符串。

第一行为内存池资源列表,包含内存粒度数据信息、粒度数据间用逗号分隔,一个粒度信息内用冒号分隔,冒号前为内存粒度大小,冒号后为数量。

资源列表不大于1024,每个粒度数量不大于4096。

第二行为申请列表。

申请的内存大小间用逗号分隔,申请列表不大于100000。

三、输出描述

输出内存池分配结果。

四、解题思路

  1. 定义一个内存列表,并初始化数据;
  2. 定义一个申请列表,并初始化数据;
  3. 分配的内存要大于等于内存的申请量;
  4. 存在满足需求的内存就必须分配;
  5. 输出内存池分配结果;

五、Java算法源码

public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    // 内存池资源列表
    String memorys = in.nextLine();
    // 申请列表
    String applys = in.nextLine();

    // 内存列表
    List<Integer> memoryList = new ArrayList<>();
    // 内存池资源列表
    List<String> memoryInfoList = new ArrayList<>(Arrays.asList(memorys.split(",")));
    for (String info : memoryInfoList) {
        int colonIndex = info.indexOf(":");
        // 内存粒度大小
        int memorySize = Integer.parseInt(info.substring(0, colonIndex));
        // 内存数量
        int memoryCount = Integer.parseInt(info.substring(colonIndex + 1));
        for (int i = 0; i < memoryCount; i++) {
            memoryList.add(memorySize);
        }
    }

    // 申请列表
    List<Integer> applyList = new ArrayList<>();
    List<String> applyListList = new ArrayList<String>(Arrays.asList(applys.split(",")));
    for (String apply : applyListList) {
        applyList.add(Integer.parseInt(apply));
    }

    // 内存分配结果
    List<Boolean> memoryAllocationList = new ArrayList<Boolean>();
    for (int applyMemory : applyList) {
        boolean flag = false;
        for (int i = 0; i < memoryList.size(); i++) {
            // 分配的内存要大于等于内存的申请量
            if (memoryList.get(i) >= applyMemory) {
                // 存在满足需求的内存就必须分配
                flag = true;
                memoryList.remove(i);
                break;
            }
        }
        memoryAllocationList.add(flag);
    }

    // 输出内存池分配结果
    for (int i = 0; i < memoryAllocationList.size(); i++) {
        System.out.print(memoryAllocationList.get(i)+",");
    }
}

六、效果展示

1、输入

8:1,16:1,32:1,64:1
60,12,24,60

2、输出

true,true,true,false

3、说明

60对应64,即为true;
12对应16,即为true;
24对应32,即为true;
60无可对应的内存,即为false;

在这里插入图片描述

4、如果改一下呢?

8:1,16:1,32:1,64:2
60,12,24,60

我猜会输出true,true,true,true,你觉得呢?

快来试试看吧。


🏆下一篇:华为OD机试真题(Java),跳跃游戏 II(100%通过+复盘思路)

🏆本文收录于,华为OD机试(JAVA)(2022&2023)

本专栏包含了最新最全的2023年华为OD机试真题,有详细的分析和Java解答。已帮助1000+同学顺利通过OD机考。专栏会持续更新,每天在线答疑。

在这里插入图片描述

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

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

相关文章

论文浅尝 | 大规模知识图谱中的知识图谱补全和多跳推理

笔记整理&#xff1a;刘健宇&#xff0c;东南大学硕士&#xff0c;研究方向为知识图谱规则学习与推理 链接&#xff1a;https://dl.acm.org/doi/abs/10.1145/3534678.3539405 动机 知识图谱(KG) 以头-关系-尾三元组的形式捕获知识&#xff0c;是许多人工智能系统中的重要组成部…

chatgpt赋能python:Python文件另存为教程:让文件保存到你想要的地方

Python 文件另存为教程&#xff1a;让文件保存到你想要的地方 最近&#xff0c;我看到有人在问如何使用Python来另存文件。对于许多初学者或非技术人员来说&#xff0c;这可能看起来很困难&#xff0c;但实际上&#xff0c;Python 提供了一些非常简单的方法来达到这一目的。下…

产品发布+联合演讲+认证+奖项丨云和恩墨在openGauss Developer Day 2023主论坛大放异彩...

openGauss Developer Day 2023 5月26日&#xff0c;一场数据库开发者年度盛会「openGauss Developer Day 2023」在北京昆泰嘉瑞文化中心成功召开。大会汇聚产学研用各界知名专家分享 openGauss 社区的技术创新、优秀实践和生态成果&#xff0c;吸引了线上线下数千名开发者、技术…

大手笔!微软一口气发布了 3 款开发者工具。。

公众号关注 “GitHubDaily” 设为 “星标”&#xff0c;每天带你逛 GitHub&#xff01; 昨天我发了一篇 Build 大会相关的生产力产品&#xff0c;介绍了未来 Windows 将集成的一系列 AI 特性&#xff0c;以及如何帮助人们更好的利用 AI&#xff0c;辅助完成各类繁琐的工作。 今…

Go1.21 速览:正式结束对 macOS 10.13 和 10.14 的支持

大家好&#xff0c;我是煎鱼。 根据 Go 语言的版本发布规律&#xff0c;一般是 2 月份和 8 月份各会发布一个新的版本。当前是 Go1.20。也就是在 8 月份会发布 Go1.21 这一个新版本。 在这个新版本&#xff0c;将会正式的结束对 macOS 10.13 和 10.14 的支持&#xff0c;并禁用…

27 VueComponent 计算属性的实现

前言 这是最近的碰到的那个 和响应式相关的问题 特定的操作之后响应式对象不“响应“了 引起的一系列的文章 主要记录的是 vue 的相关实现机制 呵呵 理解本文需要 vue 的使用基础, js 的使用基础 测试用例 用例如下, 我们这里核心关注 counterPlus100 这个计算变量 问…

JavaScript键盘事件

目录 一、keydown&#xff1a;按下键盘上的任意键时触发。 二、keyup&#xff1a;释放键盘上的任意键时触发。 三、keypress&#xff1a;在按下并释放能够产生字符的键时触发&#xff08;不包括功能键等&#xff09;。 四、input&#xff1a;在文本输入框或可编辑元素的内容…

pytroch实战12:基于pytorch的网络结构可视化

基于pytorch的网络结构可视化 前言 ​ 之前实现了一些常见的网络架构&#xff0c;但是有些网络架构并没有细说&#xff0c;并且网络传输过程中shape的变化也很少谈及过。 ​ 除此之外&#xff0c;前面的实现很少涉及到可视化的内容&#xff0c;比如损失值的可视化、网络结构的…

MySQL的下载、安装、配置(图文详解)

MySQL的下载、安装、配置&#xff08;图文详解&#xff09; 一、MySQL的4大版本二、软件的下载三、MySQL8.0 版本的安装四、配置MySQL8.0五、配置MySQL8.0 环境变量六、MySQL5.7 版本的安装、配置七、安装失败问题 一、MySQL的4大版本 MySQL Community Server 社区版本&#xf…

专高六第一次项目答辩学到的知识点【未完成】

目录标题 1、animation和traslation定义动画的区别&#xff1f;2、微信小程序的支付流程&#xff1f;3、canvas和svg有什么区别&#xff1f;4、app自定义导航栏&#xff0c;如果说打包成小程序导航栏如何适配&#xff1f;4、express权限&#xff0c;接口权限&#xff1f;5、一键…

如何在Linux系统安装Nginx

博主介绍&#xff1a;✌全网粉丝4W&#xff0c;全栈开发工程师&#xff0c;从事多年软件开发&#xff0c;在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战、定制、远程&#xff0c;博主也曾写过优秀论文&#xff0c;查重率极低&#xff0c;在这方面…

设计思维及在Thoughtworks的应用

图&#xff1a;史江鸿 第一次听到"设计思维"是在2016年&#xff0c;那时我刚加入Thoughtworks。我总能在各种场合听到这个词&#xff0c;似乎它在Thoughtworks具有不可撼动的地位。然而&#xff0c;作为QA角色&#xff0c;我并没有机会深入了解它。 我曾感到疑惑&…

2-python的变量类型

内容提要 主要介绍了python中的变量类型&#xff0c;之前不经常用的点有&#xff1a; 列表的下标可以是负数&#xff0c;无论正负&#xff0c;都是从左侧开始&#xff0c;从左到右依次递增。 还有截取操作[头:尾:步长)&#xff0c;表示连接&#xff0c;*表示重复。 列表与元组…

springboot+vue地方废物回收机构管理(java项目源码+文档)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的地方废物回收机构管理。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 &#x1f495;&#x1f495;作者&#xff1…

leetcode--删除链表的倒数第N个节点(java)

删除链表的倒数第N个节点 Leetcode 19 题解题思路代码演示链表专题 Leetcode 19 题 19 删除链表的倒数第N个节点 -可以测试 题目描述&#xff1a; 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点 示例1&#xff1a; 输入&#xff1a;he…

javascript基础五:深拷贝浅拷贝的区别?如何实现一个深拷贝?

一、数据类型存储 JavaScript中存在两大数据类型&#xff1a; 基本类型引用类型 基本类型数据保存在在栈内存中 引用类型数据保存在堆内存中&#xff0c;引用数据类型的变量是一个指向堆内存中实际对象的引用&#xff0c;存在栈中 二、浅拷贝 浅拷贝&#xff0c;指的是创建新…

springcloud分布式架构网上商城(java项目源码+文档)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的分布式架构网上商城。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 &#x1f495;&#x1f495;作者&#xff1a;…

LLM时代NLP研究何去何从?一个博士生的角度出发

深度学习自然语言处理 原创作者&#xff1a;Winni 前言 最近&#xff0c;大语言模型&#xff08;LLMs&#xff09;在许多任务上表现出接近人类水平的性能&#xff0c;这引发了行业兴趣和资金投入的激增&#xff0c;有关LLMs的论文最近也层出不穷。 看起来&#xff0c;NLP领域似…

博客系统(ssm版本)

在前面的文章中给大家介绍过博客系统的servlet版本&#xff0c;但是servlet的技术非常的老旧&#xff0c;我们在企业中用的都是springboot相关的框架&#xff0c;本章内容就是讲述如何一步一步的利用ssm的技术来实现博客系统。 目录 前期配置 创建数据库 配置文件 公共文件…

30 VueComponent 事件的绑定

前言 这是最近的碰到的那个 和响应式相关的问题 特定的操作之后响应式对象不“响应“了 引起的一系列的文章 主要记录的是 vue 的相关实现机制 呵呵 理解本文需要 vue 的使用基础, js 的使用基础 测试用例 用例如下, 我们这里核心关注 事件的处理流程 问题的调试 整个…