华为机试练习(七)书籍叠放问题
题目描述
假设书本的叠放有这样的规则,当A书的长度和宽度都大于B书时,可以将其B书置于A的上方,堆叠摆放,请设计一个程序,根据输入的书本长宽,计算最多可以堆叠摆放多少本书?
输入
[[16,15], [13, 12], [15, 14]]
输出
3
说明
这里代表有3本书,第1本长宽分别为16和15,第2本长宽为13和12,第3本长宽为15和14,它们可以按照[13, 12],[15, 14],[16,15]
的顺序堆叠,所以输出3
【分析】
动态规划,实质是求最长递增子序列,但本题有两个因素需要考虑,可以通过排序将长度置为有序,这样其实就是对宽度求最长递增子序列,且可能存在长度相同的情况,在更新dp数组判定时,也要考虑到
【实现】
// 获取输入
const input = "[[16,15], [16, 14], [13, 12], [15, 14]]"
// 转为数组
const arr = JSON.parse(input)
const len = arr.length// dp数组 dp[i]表示前i本书的最长子序列长度
// 默认为1即每个序列本身就是一个子序列,长度为1
const dp = new Array(len).fill(1)// 对输入的数组按照长度、宽度的大小进行排序
arr.sort((a, b) => {if (a[0] !== b[0]) {return a[0] - b[0]} else {return a[1] - b[1]}
})// 结果,初始为1,即至少可以放一本书
let res = 1// 从第2本书向前找,看看加上它能不能增加长度
for (let i = 1; i < len; i++) {// 要新加的书的长度和宽度const cur = arr[i]for (let j = 0; j < i; j++) {// 要比较的书的长度和宽度const pre = arr[j]if (cur[0] > pre[0] && cur[1] > pre[1]) {// 新加的书的长宽均大于当前书,说明这本书可以加在当前书的递增序列之后// 判断此时的递增子序列最大值dp[i] = Math.max(dp[i], dp[j] + 1)}// 更新最大值结果res = Math.max(res, dp[i])}
}console.log(res);
华为机试练习(七)书籍叠放问题相关推荐
- 【华为机试真题 Python实现】2022年4、5月高频机试题
文章目录 2022年4.5月高频机试题 机试必须要会的函数 输入输出处理 for 循环 通过下标访问元素 直接迭代访问元素 同时访问下标和元素 while 循环 字符ASSIC码转换 进制转换 绝对值 ...
- 【华为机试 Python实现】华为机试题集合(已更新171篇)
文章目录 新手指引 数据结构基础 华为机试真题系列 牛客网华为机试系列 Python 八股文系列 <华为机试真题详解>专栏定价99.9 包含 <华为机试真题>的所有题目. 包含 ...
- 【华为机试】死记硬背没思路?一般人我劝你还是算了吧
大家好,我是哪吒. 五月份之前,如果你参加华为OD机试,收到的应该是2022Q4或2023Q1,这两个都是A卷题. 5月10日之后,很多小伙伴收到的是B卷,那么恭喜你看到本文了,抓紧刷题吧.B卷新题库 ...
- 2022/7/26华为机试,Q2,上机迷迷糊糊的,搞完突然醒悟,自抱自泣!三道题附带答案
21:52 2022/7/26华为机试三道题附带答案 备注:未ac,华为不难,难的是个人很难进入答题状态! 第一道 给定一个字符串,是工作记录的日志时间,时间为四段格式,AA:BB:CC:DDD 其中 ...
- 大师兄教你如何过华为机试
大师兄教你如何过华为机试 宝典1-内功心法 大华为这个大数据时代土豪金海量式的招聘又要开始了!!! 近期听说大华为的校招机试马上就要开始了,由于华为软件岗位的招聘只有技术面跟机试是与技术有关的内容,所 ...
- 华为机试330分python实现
华为机试330分python实现 转载声明:本文是本人原创.其他人转载请注明来源(CSDN)附url地址.本人保留追究一切法律责任的权利,谢谢. 第一题100分,代码完成100% 第二题100分,完成 ...
- [华为机试真题][2014]62.去除重复字符并排序
题目 描述: 去除重复字符并排序 运行时间限制: 无限制 内容限制: 无限制 输入: 字符串 输出: 去除重复字符并排序的字符串 样例输入: aabcdefff 样例输出: abcdef 代码 /*- ...
- 牛客网--华为机试在线训练10:字符个数统计
牛客网–华为机试在线训练10:字符个数统计 题目描述 编写一个函数,计算字符串中含有的不同字符的个数.字符在ACSII码范围内(0~127).不在范围内的不作统计. 输入描述: 输入N个字符,字符在A ...
- 牛客网–华为机试在线训练9:提取不重复的数
牛客网–华为机试在线训练9:提取不重复的数 题目描述 输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数. 输入描述: 输入一个int型整数 输出描述: 按照从右向左的阅读顺 ...
- 牛客网–华为机试在线训练8:合并表记录
牛客网–华为机试在线训练8:合并表记录 题目描述 数据表记录包含表索引和数值,请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照key值升序进行输出. 输入描述: 先输入键值对的个 ...
最新文章
- PlateSpin forge V2P回推步骤。
- Cloud一分钟 | 电商月将至,腾讯云DCDB助力电商企业应对支付洪峰
- html5手机端三级联动城市选择代码,省市县三级联动(jQuery手机端收货地址选择地区代码)...
- 数据结构期末复习之散列表的查找
- linux与pc机网络通信,PC宿主机和目标机通信方式
- Unsupported major.minor version 51.0 jdk版本错误解决方案 eclipse版
- android ttc字体,android从ttc字体设置默认字体和字体系列
- 42表盘直径是从哪测量_手表的术语中,直径指的是外观直径还是表盘直径?
- IDEA启动tomcat控制台出现中文乱码问题完美解决方案(亲测有效)
- linux v4l2色调,V4L2下摄像头的详细参数调整
- 电信物联网平台对接教程
- UIUC云计算概念(chord)
- maven中resource配置详解
- Photoshop脚本 设置前景色和背景色
- 关于javaBean运行后出现Name was not previously introduced as per JSP.5.3的解决方法
- 山东办理高新技术企业可以享受的税收优惠
- 基于plcsimadvanced实现1500PLC仿真 OUC通讯
- 如何提取网页中的blob加密视频
- 测试职业发展、高级测试需要知道哪些、P6测试需要知道什么、测试的知识点、测试自我提升、测试圣经
- 九龙证券|面板概念股异动!11家布局公司获北上资金抢筹
热门文章
- ORB-SLAM2可以说是目前最优秀的基于特征点的视觉SLAM
- 中兴服务器车间,走进中兴通讯车间 探秘智能手机生产链(多图)
- Github 上火热的十个 Python 项目,从Debug工具到AI水军、量化交易系统。
- BLE蓝牙芯片KT1025A程序代码和调试总结
- meanShift算法介绍
- 开发平台的优势在哪?
- 自回避随机行走问题 c语言,醉汉随机行走/随机漫步问题(Random Walk Randomized Algorithm Python)...
- 如何在小米9 se(安卓9)安装Xposed框架?
- Samba服务器搭建,win10拒绝访问解决方法
- 手机号码归属地查询api接口