华为OD机试-租车骑绿道-双指针(Java 2023 B卷 100分)
题目描述
部门组织绿色骑行团建活动,租用公共双人自行车骑行,每辆自行车最多坐两人,最大载重为 M。给出部门每个人的体重,请问最多需要租用多少双人自行车。
输入描述
第一行两个数字 m 和 n,分别表示自行车的最大载重 m 和部门总人数 n。
第二行包含 n 个数字,代表每个人的体重。每个人的体重都小于等于自行车的最大载重 m。
输出描述
输出最小需要的双人自行车数量。
示例
输入:
150 4
50 60 70 80
输出:
2
解题思路
- 排序: 将每个人的体重按从小到大排序。
- 双指针: 使用双指针技巧,一个指针指向最轻的人,另一个指针指向最重的人。
- 匹配: 尝试将最轻的人和最重的人配对,如果他们的体重之和不超过 m,则他们可以共用一辆自行车;否则,最重的人单独使用一辆自行车。
- 计数: 统计需要的自