3个间隔的重叠:什么是最快的方法
overlapping of 3 intervals: what is the fastest way
给出 3 个区间 (a,b) , (c,d) , (e,f),如果存在同时存在的值 t a<=t<b AND c<=t<d AND e<=t<f ?
是否也可以计算满足此条件的 t 的范围,min(t),max(t)
?
此外,是否有可能在对订单没有任何假设的情况下做同样的事情?(即它也可以是b<a
或a<b
)
我已经为两个部分找到了一个众所周知的解决方案,但对于三个部分来说并不是微不足道的。
欢迎任何 js 或 python 示例代码。
编辑:更正的条件要求
适用于任意间隔数的 Python 解决方案,无论间隔中数字的顺序如何。它要么返回True, min t value, max t value
,要么返回False, t value, t value
。
def in_interval(intervals):
if len(intervals) == 0:
return False, None, None
min_t = min(intervals[0])
max_t = max(intervals[0])
for interval in intervals[1:]:
min_t = max(min_t, min(interval))
max_t = min(max_t, max(interval))
if min_t > max_t:
return False, None, None
else:
return True, min_t, max_t
试运转:
>>> intervals = [(6,1),(2,20),(8,7)]
>>> in_interval(intervals)
(False, 1, 1)
>>> intervals = [(6,1),(2,20),(4,9)]
>>> in_interval(intervals)
(True, 4, 6)
def order(ab):
(a, b) = ab
if a is None or b is None: return None
if a>b:
return (b,a)
else:
return (a,b)
def order2(ab, cd):
if ab is None or cd is None: return None
(a, b) = order(ab)
(c, d) = order(cd)
if a <= c:
return (ab, cd)
else:
return (cd, ab)
def intersect(ab, cd):
if ab is None or cd is None: return None
((a, b), (c,d)) = order2(ab, cd)
if b <= c:
return None
if d < b:
return (c, d)
else:
return (c, b)
def intersect_of_three(ab, cd, ef):
return intesect(intersec(ab, cd), ef)
我的第一个解决方案是对范围进行排序,以便所有间隔的形式都与x<y
[x,y]
。然后我计算
overlap_x=max(a,c,e)
overlap_y=min(b,d,f)
完全重叠存在当且仅当
overlap_x<overlap_y
其中overlap_x和overlap_y是重叠范围的边界。
您知道是否有需要更少操作的更快解决方案吗?
相关文章:
- 打破承诺链的好方法是什么
- 在JavaScript中拆分日期字符串的更好方法是什么
- 将jQuery.ech()方法转换为本地JavaScript抽象的最佳方法是什么
- 处理浮点错误的最佳方法是什么
- 基于窗口宽度jquery的函数的替代方法是什么
- 实现比较方法的最佳实践是什么;s的比较类型是在运行时选择的
- 什么'这是从第三个函数上的async 1st函数获得结果的更好方法
- knex:根据结果创建数组的合适方法是什么
- 以编程方式填充组合框道场 (1.8) 的最佳方法是什么?
- node.js是否具有'match()'方法如果是,语法是什么
- 使用Modernizr检测移动设备最可靠的方法是什么
- 确定var是否是javascript中的elementFinder对象的方法是什么
- 用javascript修复这个JSON对象字符串最干净的方法是什么
- 让会话值可用于JavaScript的好方法是什么
- 从AngularJs获取谷歌地图对象的正确方法是什么
- 有没有什么方法可以停止Jquery中的animate(也可以停止完整的回调函数)
- 使用ReactJS和Flux架构从服务器获取数据的正确方法是什么
- 什么是“;右“;使用addClass/delay/removeClass的方法
- 函数调用方法有什么用
- 列出没有 mysql 的元素的最佳方法是什么