You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于区间最值判断第二个连续区间是否被第一个区间包含(严格/非严格)

判断区间包含关系(基于最值)

给定两个连续区间的最小值(min)和最大值(max),需判断第二个区间是否包含于第一个区间。注意:本问题与Python的range函数毫无关联。

说明:我无法获取每个区间的起始和结束值,仅能从上游获取区间的min和max。现有类似问题未采用最值进行判断,也未区分严格与非严格场景,我需要最简逻辑。尽管使用起止值的方案可行,但逻辑更复杂,因此不采用。

直观例子:人站立时,腰到膝盖的区间包含于从头到脚的更大区间;但头到腰的区间不包含于脖子到膝盖的区间。

以下是通过测试用例区分非严格和严格判断的场景:

非严格判断

非严格包含允许第二个区间的边界与第一个区间的边界重合,比如第二个区间的最大值等于第一个区间的最大值,或者最小值等于第一个区间的最小值,甚至两个区间完全相等。

def is_subrange(min1, max1, min2, max2):
    ...  # 待实现

# 测试用例
assert is_subrange(2, 9, 5, 7) == True
assert is_subrange(2, 9, 1, 3) == False
assert is_subrange(2, 9, 7, 11) == False
assert is_subrange(2, 9, 1, 11) == False

assert is_subrange(2, 9, 6, 9) == True  # 非严格:右边界重合
assert is_subrange(2, 9, 2, 4) == True  # 非严格:左边界重合
assert is_subrange(2, 9, 2, 9) == True  # 非严格:完全重合

严格判断

严格要求第二个区间完全处于第一个区间内部,边界不能重合,即使两个区间完全相等也不满足条件。

def is_strict_subrange(min1, max1, min2, max2):
    ...  # 待实现

# 测试用例
assert is_strict_subrange(2, 9, 5, 7) == True  # 完全内部,符合要求
assert is_strict_subrange(2, 9, 1, 3) == False  # 左边界超出
assert is_strict_subrange(2, 9, 7, 11) == False  # 右边界超出
assert is_strict_subrange(2, 9, 1, 11) == False  # 两边都超出

assert is_strict_subrange(2, 9, 6, 9) == False  # 右边界重合,不符合严格要求
assert is_strict_subrange(2, 9, 2, 4) == False  # 左边界重合,不符合严格要求
assert is_strict_subrange(2, 9, 2, 9) == False  # 完全重合,不符合严格要求

错误实现示例

以下实现逻辑错误,无法正确判断包含关系:

def is_subrange(min1, max1, min2, max2):
    return min1 <= min2 and max1 <= max2  # 错误:应该是max1 >= max2

def is_strict_subrange(min1, max1, min2, max2):
    return min1 < min2 and max1 < max2  # 错误:应该是max1 > max2

正确最简实现

非严格判断

要让第二个区间包含于第一个区间,只需要保证第一个区间的最小值小于等于第二个区间的最小值,同时第一个区间的最大值大于等于第二个区间的最大值:

def is_subrange(min1, max1, min2, max2):
    return min1 <= min2 and max1 >= max2

严格判断

严格包含需要第一个区间的最小值严格小于第二个区间的最小值,且第一个区间的最大值严格大于第二个区间的最大值:

def is_strict_subrange(min1, max1, min2, max2):
    return min1 < min2 and max1 > max2

内容的提问来源于stack exchange,提问作者Asclepius

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 12:20:32