面灵AI

美团后端笔试记录:长距离运动与边界反弹

轮次
笔试
时间
2026-09
来源
牛客网

《面试题目》

  1. 在两端封闭的长度 h 通道中,从位置 p 沿指定方向移动给定距离,怎样计算碰撞次数、最终位置和方向?

《参考解析》

原帖记录了选择题、一道运动模拟题和代码生成任务。算法描述特别说明:初始位于端点且朝外时先转向,这次不计碰撞;其他题没有完整题干,不据此补造要求。

把反弹展开成直线

逐步模拟会被超长距离拖慢。可以把通道沿端点镜像展开,将运动变成直线上的单向位移;映射回原通道时,以 2h 为周期折返。设展开位置对 2h 取模后是 r,则原位置为 r(r 不超过 h)或 2h-r。

碰撞数是移动区间跨过的 h 的整数倍边界数量,但起点边界不能重复计算。还要先约定恰好停在端点时是否已完成转向,再确定最终方向。用 p=0 朝左、p=h 朝右、距离为零、恰好到达端点这些例子核对。距离累加与 2h 的计算也要检查整数范围,不能只把最终结果改成长整型。