当前位置: 首页 > 知识库问答 >
问题:

有效的区间分组算法

易祯
2023-03-14

我需要找到一种算法来解决以下问题:

给出了一个区间列表(leftBound、RightBound),这是在此行为中对区间进行分组的最有效算法:

间隔:(1,4)、(6,9)、(1,3)、(4,8)、(6,9)、(2,7)、(10,15)

需要的解决方案:

组(2,3)包含(1,3), (1,4), (2,7)

组(6,8)包含(4,8), (6,9)

组(10,15)包含(10,15)

当然,有不同的可能解决方案:(2,7)也可能在第二组中。

我的方法是按其左界对间隔进行排序,如果它们具有相同的左界,则按其右界对间隔进行排序。然后我只是循环遍历已排序的间隔,并尝试将它们添加到我之前刚刚构建的组中。如果这不可能,我将为该间隔构建一个新组,并继续循环遍历其余订单。

这个算法能保证我在我的区间内收到尽可能少的不同组吗?你能说这是解决这个问题的贪婪方法吗?

共有1个答案

宋飞掣
2023-03-14

这里有一个建议:

>

  • 按右边界排序:(1,3),(1,4),(2,7),(4,8),(6,9),(6,9),(10,15)

    创建具有最低条目的组(rightBound-1, rightBound)并将其删除:(2,3): (1,3)

    将所有可能的间隔添加到组中并删除它们:(2,3):(1,3),(1,4),(2,7)

    重复2。和3。直到列表为空:<代码>1。(2,3): (1,3), (1,4), (2,7); 2. (7,8): (4,8), (6,9), (6,9); 3.(14,15):(10,15)

    可选:将组扩大到其最大大小,或使用最小的条目作为组间隔(2)并在添加间隔(3)时增加左边界。

    我认为应该给出最小的组数,因为在步骤2中。我们创建一个无法避免的组,然后在步骤3。我们尽我们所能添加到它中。

  •  类似资料:
    • 我已经实现了一个解决方案,通过键分组,并根据每个组计算数据,使用和。然而,我不确定它是否真的有效,我想听听你的观点。 下面是一个示例案例:根据列表,计算每组的s平均值,知道它应该分布,并且值可能非常大。这应该是: 简单的分区器类: 分区代码: 输出为:

    • 假设我有一组由成对描述的间隔。我想找到所有包含给定值的区间集。 我制定了这个在O(n)时间内有效的解决方案,作为我追求的一个例子: 找到所有可能的集合非常重要,而不仅仅是一个。 我现在正在寻找一种计算效率更高的解决方案,可能在对数时间内。我认为可能有多集/多映射、lower_bound/upper_bound等解决方案,但迄今为止我还没有任何成功。 这可以通过使用区间树来实现,但我相信可能有一个解

    • 操作系统实现了各种算法,以便找出链表中的空洞并将它们分配给进程。 关于每种算法的解释如下。 1. 第一拟合算法 第一拟合算法(First Fit)算法扫描链表,每当它找到第一个足够大的孔来存储进程时,它就会停止扫描并将进程加载到该进程中。 该过程产生两个分区。 其中,一个分区将是一个空洞,而另一个分区将存储该进程。 First Fit算法按照起始索引的递增顺序维护链表。这是所有算法中最简单的实现方

    • 假设我得到了两个整数、,其中是一个正整数,小于。我必须找到一个有效的算法,它可以给出区间内的2位数(位数)的总和。例如,在区间中,数字之和等于9,因为0=1位,1=1位,2=2位,3=2位,4=3位。 我的程序能够通过使用循环来计算这个数字,但我正在寻找更有效的方法来处理大数字。下面是我的代码片段,只是为了给你一个概念:

    • 假设我有一个项目列表,每个项目都由一个简单的结构定义 毛皮类的选择:长的,短的,卷曲的 如果列表中包含了这3个类别的所有排列,那么最终结果将是 第一组: 动物      [猫狗鼠马] 眼睛颜色[蓝黄绿红橙] 皮毛          [长短卷曲] null 让我们将此列表称为输入(A) 将这些项目分组后,我们可以得到:(可能有其他可能性)。分组标准将是拥有尽可能少的输出组。 第一组: 动物     

    • 我试图在Hazelcast 3.8.8中建立分区组。我的主要目标是将驻留在2台物理机器中的4个集群成员分为2个分区组。当我启用分区组时,它似乎不起作用,组也没有建立。您能告诉我启用分区组缺少什么吗? 我试图通过hazelcast启用分区分组。xml。使用group type=“CUSTOM”进行测试,并将驻留在my local和我们的服务器中的成员分为两个不同的成员组。成员组成了一个集群,但似乎没