zl程序教程

您现在的位置是:首页 >  后端

当前栏目

华为OD机试 -租车骑绿岛(Java) | 机试题+算法思路+考点+代码解析 【2023】

2023-09-11 14:20:21 时间

租车骑绿岛

题目

部门组织绿岛骑行团建活动。租用公共双人自行车骑行,每辆自行车最多坐两人、做大载重M。
给出部门每个人的体重,请问最多需要租用多少双人自行车。

输入

第一行两个数字m、n,自行车限重m,代表部门总人数n。
第二行,n个数字,代表每个人的体重。体重都小于等于自行车限重m。
0 < m <= 200
0 < n <= 1000000

输出

最小需要的双人自行车数量。

示例一

输入

3 4
3 2 2 1

输出

3

解题思路

算法思想:

  • 我们需要先把所有人体重从小到大排序
  • 然后一辆车最多坐两人,所以最大的和最小的先匹配
  • 比如最大的(右指针end)和最小的(左指针start)坐都超重了,说明最大的这个人只能自己一辆车,没有其他人可以和他一起坐,所以需要的车数+1
  • 然后最小的人继续不动(左指针不动),右指针左移一个(即倒数第2重的人),如果两人都可以做,则他们俩坐,所以需要车+1。