专栏名称: 吴师兄学算法
和程序员小吴一起从初学者的角度学习算法,以动画的形式呈现解题的思路。每周四篇原创文章,期待你的鉴赏!
今天看啥  ›  专栏  ›  吴师兄学算法

华为面试原题,太难了,没做出来!

吴师兄学算法  · 公众号  · 互联网安全 科技自媒体  · 2024-01-29 22:33

主要观点总结

本文介绍了一个关于华为面试原题的问题,部门需要完成N个需求,在M个月内进行人力安排。文章提供了解题思路,包括子问题的定义和解决策略,以及使用二分查找来找到适合的人力需求k。同时,文章还提到了练习题目的来源和涉及的知识点。

关键观点总结

关键观点1: 问题背景

部门需要完成N个需求,需求的工作量大小以requirements表示。这些需求需要在M个月内完成,每月的人力是固定的,每月最多有2个需求开发,且需求不能超过部门人力。

关键观点2: 解题思路

首先将问题转化为子问题,即设置人力需求为k时,需要多少个月能够完成所有工作。这个子问题与救生艇问题相似,使用排序+双指针+贪心的策略解决。然后,通过二分查找找到适合的人力需求k,使得在M个月内完成工作。

关键观点3: 重要函数说明

文章中提到了check函数,该函数用于计算在人力需求为k时,需要最少多少个月才能完成所有需求。

关键观点4: 练习题来源及知识点

文章提到总结了100道LeetCode高频算法题,包括数组、链表、栈、队列、二叉树、回溯算法、动态规划等众多高频知识点。所选题目具有特征性,一题抵十题。


文章预览

大家好,我是吴师兄。 上周收到一个同学的私聊: 华为面试原题,太难了,没做出来! 来看一下这道题目。 题目描述 部门在进行需求开发时需要进行人力安排。当前部门需要完成 N 个需求,需求用 requirements[i] 表示, requirements[i] 表示第 i 个需求的工作量大小,单位:人月。这部分需求需要在 M 个月内完成开发,进行人力安排后每个月的人力是固定的。 目前要求每个月最多有 2 个需求开发,并且每个月需要完成的需求不能超过部门人力。请帮部门评估在满足需求开发进度的情况下,每个月需要的最小人力是多少? 输入描述 输入第一行为 M ,第二行为 requirements 。 M 表示需要开发时间要求, requirements 表示每个需求工作量大小 N` 为 `requirements` 长度,`1 ≤ N / 2 ≤ M ≤ N ≤ 10000`,`1 ≤ requirements[i]≤ 10^9 输出描述 对于每一组 ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览