我的解法:
先排序,然后让能工作最多的工人去做最长时间的工作,最短工作的工人去做最短时间的工作
class Solution:
def minimumTime(self, jobs: List[int], workers: List[int]) -> int:
jobs.sort()
workers.sort()
max_time=-1
for pointer in range(0,len(jobs)):
worktime=math.ceil(jobs[pointer]/workers[pointer])
max_time=max(worktime,max_time)
return max_time
标准解法:
class Solution:
def minimumTime(self, *args) -> int:
return max((w + j - 1) // j for w, j in zip(*map(sorted, args)))
# class S:
# def __getitem__(self, t: int) -> int:
# A = [t * x for x in workers]
# return all(a <= b for a, b in zip(jobs, A))
# return bisect_left(S(), True, 1, 123456)