广进:本题需要最少的车辆,即尽可能组合出重量小于等于m的两人组。
首先,我们可以将所有人按体重升序,然后将最大体重和m比较,若最大体重大于等于m,则这个人只能一人占一辆车,车数量count++,然后将最大体重弹出,继续将剩下体重中最大的和m比较,逻辑同上,直到最大体重小于m时,停止弹出。
在剩余体重中,我们利用双指针,i指针指向最小体重,j指针指向最大体重,然后组合它们,即arr[i]+arr[j],和m比较,若小于等于m,则说明这两个人可以共享一辆车,车数量count++,然后i++,j--。如果arr[i]+arr[j]>m,则说明两个人无法共享一辆车,我们只能优先将这里车分配给较大体重的人,此时车数量count++,然后j--。
按上面逻辑移动双指针,最后可能会出现两种情况:
i > j 此情况下所有人均分配到了车,因此可以直接输出count作为题解
i === j 此情况下还有一个人未分配到车,因此需要count++,为这个人单独分配一辆车
投递华为等公司10个岗位 >
0 点赞 评论 收藏
分享
牛客503290053号:投之前所有hr都热情的很,每天一个电话,加了起码十几个hr的微信,现在全都不回了
投递华为等公司10个岗位 >
0 点赞 评论 收藏
分享
关注他的用户也关注了: