Php 重叠间隔和重叠量
这个问题可能与其他问题类似,但有点不同。假设我们有一组这样的间隔,假设a-9是数字,但为了格式化,我使用了字母):Php 重叠间隔和重叠量,php,algorithm,intervals,overlap,Php,Algorithm,Intervals,Overlap,这个问题可能与其他问题类似,但有点不同。假设我们有一组这样的间隔,假设a-9是数字,但为了格式化,我使用了字母): ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 所以我们有一个从I到Z的主区间,一个从M到S的区间a,依此类推 现在我想让我的区间在主区间(基本上是基本约束)内重叠最多,即M-O(a和d)和Q-S(a和b)以及U-Z(b和c),每个区间有2个重叠(超出Z的所有内容都是不可能的,因为它在主区间之外) 我基本上想要一个间隔列表(也称为数组)和Main中的重
ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
所以我们有一个从I
到Z
的主区间,一个从M
到S
的区间a
,依此类推
现在我想让我的区间在主区间(基本上是基本约束)内重叠最多,即M-O(a和d)和Q-S(a和b)以及U-Z(b和c),每个区间有2个重叠(超出Z的所有内容都是不可能的,因为它在主区间之外)
我基本上想要一个间隔列表(也称为数组)和Main中的重叠数,而不是在PHP中将Main计算到该数中(不需要排序,因为有足够的方法可以做到这一点)
我想画一张间隔的图片,然后计算每一像素列的颜色,但那是不可能的
- 在PHP中工作
- 速度相对较快
- 是可靠的
- 提供重叠间隔及其重叠计数
- 具有用作基础约束的主间隔,该间隔不计入重叠
- 构建2个向量。一个包含每个区间的起点,另一个包含每个区间的终点
- 对2个向量进行排序
- 当你有两个向量中的任何一个时:
- 在2个选项之间选择最小值
- 如果从具有起点的向量中拾取,则将重叠间隔数增加1,否则将其减少1
- 如果您的点也是主间隔的起点,请设置一个标志,表明您的结果现在有效
- 如果你的点是主间隔的终点,你可以停下来
- 如果设置了该标志,则可以将当前重叠间隔数与到目前为止的最大值进行比较,并进行相应更新
这是O(NlogN)和你拥有的间隔数。这的基本算法是用一个计数器遍历整个长度,当你遇到起点时计数器增加,当你遇到终点时计数器减少 跟踪此计数器达到的最大值 再次检查整个长度,这一次在以下情况下将位置添加到
结果
数组中:1.您位于主要部件边界内。
2.您的计数器(保持相同的方式)等于您之前计算的最大值。这听起来很复杂……向量的确切含义是什么(关于PHP,我没有发现太多)我应该做一个vactor图形还是什么?也可以按什么排序?按它们的简单起点/终点排序,所以我有一个JMQU和OS15的起点和终点排序,或者按起点排序,并设置与之相关的终点?向量/数组/列表任何你想要的可以在PHP数组中容纳多个内容的东西都可以A是起点,另一个是终点。我假设每个起点都有类似的数字(日期或索引也可以,只要你能排序就行)。你应该独立地对它们进行排序,这样算法才能工作。好吧,现在我明白了,我认为可能是这样的,但因为我不确定我是否真的想问。因此,最后我得到了两个数组,如我上面的评论所示(加上main的要点)这不仅仅是最大值,但对于较低的值,我必须一遍又一遍地重复这一点,但听起来有点技术性legit@My1-在每一点上,您都有计数器的值,并且可以决定如何使用它。您需要做什么?我希望在一个数组中有重叠以及或多或少的所有重叠的重叠计数(我可以稍后按计数排序)@halfer谢谢你的更正,但我有一个问题要问-5(没有一个下层选民说了什么)最后,我不清楚我问了什么,尽管我试着遵循大多数事情,包括TLDR,但问题并不是完全重复的,因为没有javascript要求和其他一些小东西,这使得它相对独特。我同意,没有评论的否决票没有多大帮助,但投票评论仍然不属于帖子如果你想添加元评论,你可以在评论中添加元评论(我不知道这是否会对投票产生很大影响)。
<-a---> <------c--->
<------------MAIN>
ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
<--d-> <--b------->