小米 秋招 笔试
1.算法:给定一个宽度为n的无限高游戏界面,初始每列已有一定高度的方块(用数组表示),然后依次下落一系列特定形状的俄罗斯方块(每个方块由若干格子组成),要求模拟下落过程(方块会落到底部或已有方块上),并最终输出游戏界面各列的新高度。
思路:对于每个下落方块,根据其形状(需考虑旋转和平移)在初始高度数组上尝试放置:从顶部向下扫描,检查方块底部与当前界面是否碰撞(即方块所占格子的下方是否已有方块或超出底部),找到最低的合法位置后更新对应列的高度(取原高度与方块放置后新高度的最大值),依次处理所有方块即可得到最终各列高度。
2.算法:给定n艘船的耐久度数组a和攻击次数k,海盗攻击顺序为左右交替(先左端、再右端、再左端第二艘、右端第二艘,以此类推),每次攻击减少目标船1点耐久,求攻击结束后耐久值非正的船的数量。
思路:
由于k可能很大,直接模拟每次攻击会超时。通过计算完整攻击轮数(每轮左右各一次)和剩余攻击次数,可确定每艘船实际被攻击的次数:左侧船主要受左端攻击,右侧船主要受右端攻击。遍历每艘船,根据其位置计算所受攻击次数(左侧第i艘船被左端攻击次数为轮数加可能的额外左攻击),若耐久值小于等于攻击次数则被击沉,统计总数即可。
#秋招笔面试记录##秋招笔试记录##秋招投递记录##大厂面试问八股多还是项目多?##业务面应该做哪些准备##小米##牛客AI配图神器#
思路:对于每个下落方块,根据其形状(需考虑旋转和平移)在初始高度数组上尝试放置:从顶部向下扫描,检查方块底部与当前界面是否碰撞(即方块所占格子的下方是否已有方块或超出底部),找到最低的合法位置后更新对应列的高度(取原高度与方块放置后新高度的最大值),依次处理所有方块即可得到最终各列高度。
2.算法:给定n艘船的耐久度数组a和攻击次数k,海盗攻击顺序为左右交替(先左端、再右端、再左端第二艘、右端第二艘,以此类推),每次攻击减少目标船1点耐久,求攻击结束后耐久值非正的船的数量。
思路:
由于k可能很大,直接模拟每次攻击会超时。通过计算完整攻击轮数(每轮左右各一次)和剩余攻击次数,可确定每艘船实际被攻击的次数:左侧船主要受左端攻击,右侧船主要受右端攻击。遍历每艘船,根据其位置计算所受攻击次数(左侧第i艘船被左端攻击次数为轮数加可能的额外左攻击),若耐久值小于等于攻击次数则被击沉,统计总数即可。
#秋招笔面试记录##秋招笔试记录##秋招投递记录##大厂面试问八股多还是项目多?##业务面应该做哪些准备##小米##牛客AI配图神器#
全部评论

佬不是25的嘛
相关推荐
今天 11:39
门头沟学院 Java 点赞 评论 收藏
分享
点赞 评论 收藏
分享