题目描述
给了n个项目,每个项目有不同的工作阶段。
限制是每周只能做一个阶段,相邻的两周不能看同一个项目
问最多能看多少周?
f1-贪心 |
基本分析
- 最好的分配方式?最长的分为一类,其余一类,用其余的来分隔最长的
- 会有哪些情况?s > rest + 1和 s <= rest + 1的情况
代码
class Solution:
def numberOfWeeks(self, milestones: List[int]) -> int:
s = sum(milestones)
mx = max(milestones)
rest = s - mx
if mx <= rest + 1:
return s
else:
return rest * 2 + 1
总结
- 不用排序,直接求和以及求最大就行了