📜  巧克力分配问题的 Javascript 程序

📅  最后修改于: 2022-05-13 01:56:07.031000             🧑  作者: Mango

巧克力分配问题的 Javascript 程序

给定一个包含 n 个整数的数组,其中每个值代表一包中巧克力的数量。每个包可以有不定数量的巧克力。有 m 个学生,任务是分发巧克力包,这样:

  1. 每个学生得到一包。
  2. 给学生的巧克力包中的巧克力数量与巧克力数量之差最小。

例子:

来源:Flipkart 面试经历

一个简单的解决方案是生成 arr[0..n-1] 的所有大小为 m 的子集。对于每个子集,找出其中最大和最小元素之间的差异。最后,返回最小差值。
一个有效的解决方案是基于这样的观察,即为了最小化差异,我们必须从排序的数据包中选择连续的元素。我们首先对数组 arr[0..n-1] 进行排序,然后找到大小为 m 的子数组,其中最后一个元素和第一个元素之间的差异最小。

下图是上述方法的试运行:

巧克力配送问题解决方案

下面是上述方法的实现:

Javascript


输出:

Minimum difference is 10

时间复杂度: O(n Log n),因为我们在子数组搜索之前应用排序。

请参阅有关巧克力分配问题的完整文章以获取更多详细信息!