华为OD机试 - 书籍叠放 - 逻辑分析(Java 2023 B卷 200分)

在这里插入图片描述

目录

    • 专栏导读
    • 一、题目描述
    • 二、输入描述
    • 三、输出描述
    • 四、解题思路
    • 五、Java算法源码
    • 六、效果展示
      • 1、输入
      • 2、输出
      • 3、说明

华为OD机试 2023B卷题库疯狂收录中,刷题点这里

专栏导读

本专栏收录于《华为OD机试(JAVA)真题(A卷+B卷)》。

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

一、题目描述

书籍的长、宽都是整数对应(l,w)。如果书 A 的长宽度都比 B 长宽大时,则允许将 B 排列放在 A 上面。现在有一组规格的书籍,书籍叠放时要求书籍不能做旋转,请计算最多能有多少个规格书籍能叠放在一起。

二、输入描述

输入:books = [[20,16],[15,11],[10,10],[9,10]]

说明:总共 4 本书籍,第一本长度为 20 宽度为 16;第二本书长度为 15 宽度为 11,依次类推,最后一本书长度为 9 宽度为 10。

三、输出描述

3

最多 3 个规格的书籍可以叠放到一起,从下到上依次为:[20,16],[15,11,[10,10]

四、解题思路

这是一道很典型的逻辑分析题,只要按照题目描述的意思走就可以了。

如果考试的时候,你抽到的200分的题是这道题的话,那么你足够幸运了~

  1. 输入一组二位数组形式的字符串,[[20,16],[15,11],[10,10],[9,10]];
  2. 将输入字符串转为数组集合;
  3. 左右依次对比,降序排序, [[20,16],[15,11],[10,10],[9,10]];
  4. 定义符合要求的数组集合okList;
  5. 获取长宽最大的第一个数组firstArr;
  6. 遍历余下的数组集合;
    • 获取下一个数组nextArr;
    • 通过第一个数组去寻找长宽都比第一个数组小的第二个数组
    • 将新加入的“下一个数组”置为“待比较的第一个数组”;
  7. 输出符合要求的数组大小。

五、Java算法源码

public class OdTest {/*** 如果书 A 的长宽度都比 B 长宽大时,则允许将 B 排列放在 A 上面* [[20,16],[15,11],[10,10],[9,10]]*/public static void main(String[] args) {Scanner sc = new Scanner(System.in);String input = sc.nextLine();// [20,16] [15,11] [10,10] [9,10]String[] arr = input.substring(1,input.length()-1).replace("],","]],").split("],");// 将输入字符串转为数组集合List<Integer[]> arrList = new ArrayList<>();for (int i = 0; i < arr.length; i++) {Integer[] ints = Arrays.stream(arr[i].replace("[", "").replace("]", "").split(",")).mapToInt(Integer::parseInt).boxed().toArray(Integer[]::new);arrList.add(ints);}// 左右依次对比,降序排序 [[20,16],[15,11],[10,10],[9,10]]Collections.sort(arrList, new Comparator<Integer[]>() {@Overridepublic int compare(Integer[] o1, Integer[] o2) {if(o1[0] > o2[0]){return -1;}else if(o1[0] < o2[0]){return 1;}else{if(o1[1] > o2[1]){return -1;}else if(o1[1] <o2[1]){return 1;}else{return 0;}}}});// 符合要求的数组List<Integer[]> okList = new ArrayList<>();// 获取长宽最大的第一个数组Integer[] firstArr = arrList.get(0);okList.add(firstArr);// 遍历余下的数组集合for (int i = 1; i < arrList.size(); i++) {// 获取下一个数组Integer[] nextArr = arrList.get(i);// 通过第一个数组去寻找长宽都比第一个数组小的第二个数组if(firstArr[0] > nextArr[0] && firstArr[1] > nextArr[1] ){okList.add(nextArr);// 将新加入的“下一个数组”置为“待比较的第一个数组”firstArr = nextArr;}}// 输出符合要求的数组大小System.out.println(okList.size());}
}

六、效果展示

1、输入

[[20,16],[10,10],[9,10],[15,11],[15,12],[15,12],[9,9],[20,17]]

2、输出

4

3、说明

  1. 输入[[20,16],[10,10],[9,10],[15,11],[15,12],[15,12],[9,9],[20,17]];
  2. 按照左右依次对比,降序排序,[[20,17],[20,16],[15,12],[15,12],[15,11],[10,10],[9,10],[9,9]];
  3. 通过第一个数组去寻找长宽都比第一个数组小的第二个数组,最终获得[[20,17],[15,12],[10,10],[9,9]];
  4. 输出符合要求的数组集合长度4。

在这里插入图片描述


🏆下一篇:华为OD机试 - 最长的顺子 - 感谢@禁止你发言提供的更简便算法(Java 2023 B卷 200分)

🏆本文收录于,华为OD机试(JAVA)真题(A卷+B卷)

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Linux基础】1. Linux 启动过程

文章目录 【 1. 内核的引导 】【 2. 运行init 】 运行级别 【 3. 系统初始化 】【 4. 建立终端 】【 5. 用户登录系统 】【 6. 图形模式与文字模式的切换方式 】【 7. Linux关机 】 Linux系统的启动过程分为 5个阶段&#xff1a; &#xff08;1&#xff09;内核的引导。 &#…

斩获AIoT新维奖两项大奖,移远通信以卓越算力产品引领智能物联新未来

12月15日&#xff0c;由物联网智库、智次方研究院主办&#xff0c;广东省物联网协会、深圳市物联网协会、深圳市智能终端产业协会协办的中国AIoT产业年会暨2024年智能产业前瞻洞察大典在深圳顺利举办。 作为全球领先的物联网整体解决方案供应商&#xff0c;移远通信应邀参加大会…

[计网01] 物理层 详细解析笔记,特性

计算机网络的物理层是网络协议栈中的第一层&#xff0c;负责传输原始的比特流&#xff08;bitstream&#xff09;通过物理媒介进行通信。物理层主要关注传输介质、信号的编码和调制、数据传输速率以及数据传输的物理连接等方面。 相关特性 机械特性&#xff08;Mechanical Ch…

Windows操作系统:引领桌面计算的传奇

导言 Windows操作系统作为桌面计算领域的巨头&#xff0c;深刻影响了个人计算机的发展历程。本文将深入探讨Windows的发展历程、关键特性以及其在桌面计算中的卓越地位。 1. 历史与版本 Windows 1.0到Windows 10&#xff1a; Windows经历了多个版本的迭代&…

创投课程第五期 | 超越比特币:探索BTC生态的无限可能

协会邀请了来自水滴资本&#xff08;Waterdrip Capital&#xff09;的投资总监——Elaine&#xff0c;作为VC创投课程第5期的嘉宾&#xff0c;在北京时间12月17日(周日)晚上21:00 PM-22:00 PM&#xff0c;届时将与所有对Web3投资、创业心怀热忱的朋友们共同探讨《超越比特币&am…

AI性能再提升12.5%,ZStack Cube 超融合一体机基于第五代英特尔®至强®可扩展处理器解决方案发布

12月15日&#xff0c;以“Al无处不在&#xff0c;创芯无所不及”为主题的2023英特尔新品发布会暨AI技术创新派对上&#xff0c;云轴科技ZStack与英特尔联合发布基于第五代英特尔 至强 可扩展处理器的 ZStack Cube 超融合一体机解决方案白皮书&#xff08;简称解决方案&#xff…

前端框架如何帮助开发者构建应用程序?

目录 前言 1.项目简介 2. 平台特性 2.1 构架特性 2.2 功能特性 3. 整体架构 4. 技术栈 平台的开放性&#xff1a; 平台高拓展性&#xff1a; 5. 基础功能及搭建 5.1 代码生成器 5.2 工作流程 5.3 门户设计 5.4 大屏设计 5.5 报表设计 5.6 第三方登录 5.7 多租…

MyBatisX快速开发插件 [MyBatis-Plus系列]

导读 Hi,大家好,我是悟纤。我就是我,不一样的烟火。我就是我,与众不同的小苹果。 MyBatis-Plus为我们提供了强大的mapper和service模板,能够大大的提高开发效率。但是在真正开发过程中,MyBatis-Plus并不能为我们解决所有问题,例如一些复杂的SQL,多表联查,我们就需要…

【面向对象】C++/python/java的多态比较

一、面向对象的主要特点 封装&#xff1a;封装是把数据和操作数据的方法绑定在一起&#xff0c;对数据的访问只能通过已定义的接口。这可以保护数据不被外部程序直接访问或修改&#xff0c;增强数据的安全性。继承&#xff1a;继承是一种联结类的层次模型&#xff0c;并且允许…

Switch Transformers 的模型架构

Switch Transformers 的模型架构主要由以下几个部分组成&#xff1a; **专家&#xff1a;**Switch Transformers 由多个专家组成&#xff0c;每个专家都具有独立的参数。专家的数量可以根据需要进行调整。 **路由器&#xff1a;**路由器负责根据输入选择合适的专家。路由器可…

解决 Hbuilder打包 Apk pad 无法横屏 以及 H5 直接打包 成Apk

解决 Hbuilder打包 Apk pad 无法横屏 前言云打包配置 前言 利用VUE 写了一套H5 想着 做一个APP壳 然后把 H5 直接嵌进去 客户要求 在pad 端 能够操作 然后页面风格 也需要pad 横屏展示 云打包 配置 下面是manifest.json 配置文件 {"platforms": ["iPad"…

The Grid – Responsive WordPress Grid响应式网格插件

点击阅读The Grid – Responsive WordPress Grid响应式网格插件原文 The Grid – Responsive WordPress Grid响应式网格插件是一个高级 wordpress 网格插件&#xff0c;它允许您在完全可定制且响应迅速的网格系统中展示任何自定义帖子类型。 Grid WordPress 非常适合展示您的博…