租车骑绿岛
题目
部门组织绿岛骑行团建活动。租用公共双人自行车骑行,每辆自行车最多坐两人、做大载重M。
给出部门每个人的体重,请问最多需要租用多少双人自行车。
输入
第一行两个数字m、n,自行车限重m,代表部门总人数n。
第二行,n个数字,代表每个人的体重。体重都小于等于自行车限重m。
0 < m <= 200
0 < n <= 1000000
输出
最小需要的双人自行车数量。
示例一
输入
ode class="prism language-plaintext">3 4 3 2 2 1 ode>
输出
ode class="prism language-plaintext">3 ode>
解题思路
算法思想:
- 我们需要先把所有人体重从小到大排序
- 然后一辆车最多坐两人,所以最大的和最小的先匹配
- 比如最大的(右指针end)和最小的(左指针start)坐都超重了,说明最大的这个人只能自己一辆车,没有其他人可以和他一起坐,所以需要的车数+1
- 然后最小的人继续不动(左指针不动),右指针左移一个(即倒数第2重的人),如果两人都可以做,则他们俩坐,所以需要车+1。