#技术岗笔试题求解#第i辆车的最大载客量capacity[i],车上的乘客数nums[i],排队的人数k,可以把乘客安排在任意一辆车上,求最多能装满几辆车
全部评论
用Java这样试试 public static int maxCars(int[] capacity, int[] nums, int k) { int n = capacity.length; int[][] cars = new int[n][2]; for (int i = 0; i < n; i++) { cars[i][0] = capacity[i]; cars[i][1] = nums[i]; } Arrays.sort(cars, (a, b) -> a[0] - b[0]); // 按照最大载客量从小到大排序 int count = 0, idx = 0; while (idx < n && k > 0) { // 还有人等待且还有车可用 int passengers = Math.min(k, cars[idx][0] - cars[idx][1]); // 尽量安排多的乘客 cars[idx][1] += passengers; k -= passengers; if (cars[idx][1] == cars[idx][0]) { // 这辆车已经满载 count++; idx++; } } return count; }
1 回复 分享
发布于 2023-04-01 19:14 陕西
直接按空闲座位从小到大排序然后贪心就行了
点赞 回复 分享
发布于 2023-04-03 11:26 浙江
有谁来解答吗?
点赞 回复 分享
发布于 2023-04-01 13:12 北京
可以使用贪心算法来解决这个问题。 首先,将所有车按照最大载客量从小到大排序。然后,从最小的车开始,将排队的人数尽可能地安排在这辆车上,直到这辆车无法再装下更多的人或者排队的人已经全部安排完毕。接着,再考虑下一辆车,重复上述过程,直到所有的车都被考虑过。 具体实现时,可以使用一个变量来记录已经安排的人数,以及一个变量来记录已经安排的车辆数。每次考虑一辆车时,从排队的人数中减去已经安排的人数,然后将剩余的人数尽可能地安排在这辆车上。如果这辆车已经被填满了,就将已经安排的车辆数加1,并将已经安排的人数清零,然后考虑下一辆车。 最后,返回已经安排的车辆数即可。 以下是Python代码实现: ```python def max_cars(capacity, nums, k): cars = sorted(zip(capacity, nums)) count = 0 total = 0 for c, n in cars: total += n if total <= c: continue count += 1 total = n if total > 0: count += 1 return count ``` 时间复杂度为O(nlogn),其中n为车的数量。
点赞 回复 分享
发布于 2023-03-31 14:40 AI生成

相关推荐

感觉初筛都过不去,但是没挂我,我就先等着吧
投递华为技术有限公司等公司10个岗位
点赞 评论 收藏
分享
珩珺:那些经历都太大太空了,实习的情况不了解,大创项目连名字、背景、目的及意义都没体现出来;地摊经济更是看完连卖的什么产品都不知道,项目成果直接写营收多少都更直观真实一点;后面那个校文体部的更是工作内容是组织活动整理流程,成果变成了当志愿者,而且你们学校本科学生会大一入学就直接当部长吗,志愿里面还提到了疫情防控,全面解封是22年12月的事情,可能时间上也有冲突。可能你花了钱人家就用AI给你随便写了点内容改了一下,没什么体现个性化的点
点赞 评论 收藏
分享
星期一的大老师:项目描述 和 技术栈单开一栏;八股文:算法与数据结构,计算机网络一定要写,操作系统不了解可以不写;Linux命令,Git,Docker基础命令和基本使用一定要写,要有实际使用场景的解决经验;项目的八股文上:redis 解决 缓存雪崩,缓存击穿,缓存穿透的解决方案,一个问题的不同方案可以一起用,不需要重复在两个项目写。第二个项目换一个。小厂可以投一投
投了多少份简历才上岸
点赞 评论 收藏
分享
评论
2
4
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务