遇到一个快递员取快递面试题,想请问波波老师解题思路
来源:10-1 贪心基础 Assign Cookies
铁甲小宝
2021-06-09
一次面试中遇到这样一道题:“有若干个快递员,需要去不同地点取若干个快递,假设他们都处在同一水平线上,快递员和快递的位置分别记做x轴上不同的位置点,通过数组表示他们的位置。每个快递员在一个时间单位只能左移或者右移一个单位,或者原地不同,求最少需要多少个时间单位才能取完所有的快递,给的一个测试用例是,快递员的数组是persons=[2,8,7], 快递的数组是goods=[1,3,7,11], 最少需要3个时间单位才能取完所有快递:第一个快递员的线路是2->1->2->3, 用3个时间单位取到了位置为1和3的快递,第二个快递员的线路是8->9->10->11,用3个时间单位取到了位置为11的快递,第三个快递员的线路是7->7,用0个时间单位取到了位置为7的快递,因此答案是3个时间单位。快递数大于等于快递员数,他们的取值范围都在1到10的5次方之间”,我是觉得这道题应该是个贪心算法的问题,每一次循环都确定这一轮每个快递员应该去取哪个快递。但是写不出来,想请bobo老师帮忙分析下
写回答
1回答
-
应该是二分搜索。搜索最小时间 t。
对于一个固定的 t,验证这些快递员是否可以取完这些快递,可以用贪心。对快递员和快递进行排序。最小的快递肯定由最小的快递员取,如果还有富裕时间,这个快递员可以去取次小的快递,以此类推。
继续加油!:)
052021-06-15
相似问题
逆波兰问题
回答 1
波波老师,请教下求一个比n大的不重复数
回答 1