部门组织绿岛骑行团建活动,租用公共双人自行车骑行,每辆自行车最多坐两人、最大载重 M。
给出部门每个人的体重,请问最多需要租用多少双人自行车。
第一行两个数字 m、n,自行车限重 m,代表部门总人数 n。
第二行,n 个数字,代表每个人的体重。体重都小于等于自行车限重 m。
0 0 < n <= 1000000 最小需要的双人自行车数量。 7 6 4 下一篇:华为OD机试真题 JavaScript 实现【相对开音节】【2022Q4 100分】,附详细解题思路 本文收录于,华为OD机试(JavaScript)真题(A卷+B卷) 每一题都有详细的答题思路、详细的代码注释、样例测试,订阅后,专栏内的文章都可看,可加入华为OD刷题群(私信即可),发现新题目,随时更新,全天CSDN在线答疑。三、输出描述
四、解题思路
1、输入
3 4 5 3 3 72、输出
3、说明
4、双指针算法
五、JavaScript算法源码
function calculate(weightLimit, weights) {
const n = weights.length;
let count = 0;
let i = 0;
let j = n - 1;
weights.sort((a, b) => a - b);
/**
* 如果两人体重之和小于等于 m,则租一辆双人自行车。
* 如果两人体重之和大于 m,则租一辆单人自行车。
*/
while (i < j) {
// 如果两个重量加起来大于m,那么右指针左移
if (weights[i] + weights[j] > weightLimit) {
j--;
count++;
} else {
i++;
j--;
count++;
}
}
// 左右指针相等时
if (i === j) {
count++;
}
return count;
}
六、效果展示