在javascript中获取两个范围之间的交集

Mir*_*Lcl 2 javascript algorithm math intersection

我试图找到两个范围(int值)和(如果存在)之间的交集返回一个包含交集的开始和结束的数组

range 1 : 2,5
range 2 : 4,7

result : 4,5
Run Code Online (Sandbox Code Playgroud)

我发现了几个关于数组之间交叉的其他主题,但没有人帮助我找到确切的交集(我刚刚发现了一个有用的函数,如果交集存在但是没有告诉交叉点是什么,则返回'true')

我在alghoritms非常糟糕,所以我发现了一些问题,我真的很感激一个提示

谢谢

Pau*_*aul 12

这只是一些基本逻辑.

struct range
     int start , end

range intersection(range a , range b)
    //get the range with the smaller starting point (min) and greater start (max)
    range min = (a.start < b.start  ? a : b)
    range max = (min == a ? b : a)

    //min ends before max starts -> no intersection
    if min.end < max.start
        return null //the ranges don't intersect

    return range(max.start , (min.end < max.end ? min.end : max.end))
Run Code Online (Sandbox Code Playgroud)

  • 尽管事实上这确实是一个基本逻辑,但我对这种检查交集的方式感到惊讶(即将 minend 与 maxstart 进行比较),它将派上用场,谢谢! (2认同)