对于这一道题,我们可以发现最长的任务数量如果大于剩下的任务数量加一,就不能继续工作下去了。所以我们有maxTasks > rest + 1
。
class Solution {
public:
long long numberOfWeeks(vector<int>& milestones) {
long long maxTasks = *max_element(milestones.begin(), milestones.end());
long long rest = accumulate(milestones.begin(), milestones.end(), 0LL) - maxTasks;
if (maxTasks > rest + 1) {
return rest * 2 + 1;
}
return maxTasks + rest;
}
};
- 时间复杂度:$O(n)$,
n
为milestones
的长度 - 空间复杂度:$O(1)$