• 【C语言刷LeetCode】1953. 你可以工作的最大周数(M)


    给你 n 个项目,编号从 0 到 n - 1 。同时给你一个整数数组 milestones ,其中每个 milestones[i] 表示第 i 个项目中的阶段任务数量。

    你可以按下面两个规则参与项目中的工作:

    每周,你将会完成 某一个 项目中的 恰好一个 阶段任务。你每周都 必须 工作。
    在 连续的 两周中,你 不能 参与并完成同一个项目中的两个阶段任务。
    一旦所有项目中的全部阶段任务都完成,或者仅剩余一个阶段任务都会导致你违反上面的规则,那么你将 停止工作 。注意,由于这些条件的限制,你可能无法完成所有阶段任务。

    返回在不违反上面规则的情况下你 最多 能工作多少周。

    示例 1:

    输入:milestones = [1,2,3]
    输出:6
    解释:一种可能的情形是:
    ​​​​- 第 1 周,你参与并完成项目 0 中的一个阶段任务。
    - 第 2 周,你参与并完成项目 2 中的一个阶段任务。
    - 第 3 周,你参与并完成项目 1 中的一个阶段任务。
    - 第 4 周,你参与并完成项目 2 中的一个阶段任务。
    - 第 5 周,你参与并完成项目 1 中的一个阶段任务。
    - 第 6 周,你参与并完成项目 2 中的一个阶段任务。
    总周数是 6 。
    示例 2:

    输入:milestones = [5,2,1]
    输出:7
    解释:一种可能的情形是:
    - 第 1 周,你参与并完成项目 0 中的一个阶段任务。
    - 第 2 周,你参与并完成项目 1 中的一个阶段任务。
    - 第 3 周,你参与并完成项目 0 中的一个阶段任务。
    - 第 4 周,你参与并完成项目 1 中的一个阶段任务。
    - 第 5 周,你参与并完成项目 0 中的一个阶段任务。
    - 第 6 周,你参与并完成项目 2 中的一个阶段任务。
    - 第 7 周,你参与并完成项目 0 中的一个阶段任务。
    总周数是 7 。
    注意,你不能在第 8 周参与完成项目 0 中的最后一个阶段任务,因为这会违反规则。
    因此,项目 0 中会有一个阶段任务维持未完成状态。
     

    提示:

    n == milestones.length
    1 <= n <= 105
    1 <= milestones[i] <= 109

    来源:力扣(LeetCode
    链接:https://leetcode.cn/problems/maximum-number-of-weeks-for-which-you-can-work
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    这道题感觉就是个脑筋急转弯
    翻译下题意就是,任务安排不能相连
    那么就是把最多的任务放在奇数位,其他的数放在偶数位或者未完的奇数位
    当最多的任务比总任务的一半还少的话,任务总能做完
    当最多的任务比总任务的一半还多的话,那么任务不能做完,能做多少天取决于其他任务的总和。

    1. int Cmp(const void *a, const void *b)
    2. {
    3. return *(int *)b - *(int *)a;
    4. }
    5. long long numberOfWeeks(int* milestones, int milestonesSize){
    6. int i;
    7. long long ret = 0;
    8. long long sum = 0;
    9. qsort(milestones, milestonesSize, sizeof(int), Cmp);
    10. for (i = 0; i < milestonesSize; i++) {
    11. sum += milestones[i];
    12. }
    13. if (milestones[0] <= sum / 2) {
    14. return sum;
    15. } else {
    16. ret = sum - milestones[0];
    17. ret = ret * 2 + 1;
    18. }
    19. return ret;
    20. }

  • 相关阅读:
    WoShop分销积分直播短视频商城全开源无加密商城源码
    在Winform系统开发中,对表格列表中的内容进行分组展示
    我对《RAG/大模型/非结构化数据知识库类产品》技术架构的思考、杂谈
    使用Ollama+OpenWebUI本地部署Gemma谷歌AI开放大模型完整指南
    【RTOS训练营】继续程序框架、tick中断补充、预习、课后作业和晚课提问
    搭建嵌入式GDB调试环境以及VSCode+gdbserver 图形化调试
    【山东科技大学OJ】2413 Problem C: 逆序输出
    机器学习高手之路:发现TensorFlow学习网站的无限可能!
    【Linux】快速入门法宝~你值得拥有
    单片机卡死的几大原因、分析、解决
  • 原文地址:https://blog.csdn.net/jin615567975/article/details/126615625