1953. 你可以工作的最大周数

题目描述

给了n个项目,每个项目有不同的工作阶段。
限制是每周只能做一个阶段,相邻的两周不能看同一个项目
问最多能看多少周?

f1-贪心

基本分析

  1. 最好的分配方式?最长的分为一类,其余一类,用其余的来分隔最长的
  2. 会有哪些情况?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

总结

  1. 不用排序,直接求和以及求最大就行了
posted @ 2023-04-03 12:12  zhangk1988  阅读(21)  评论(0)    收藏  举报