欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

在列表里添加不重叠的区间

程序员文章站 2022-10-04 13:17:52
现有列表a, a中元素是如[x,y]格式的数组,代表一段数字区间, 如[1,3]表示从1到3之间的任何数字 判断给定的新数字区间new_element(例如: [10, 25])能不能添加到列表a中,返回True or False 要求任何被添加进入列表a的新数字区间,必须满足以下条件: 新插入的数 ......

现有列表a, a中元素是如[x,y]格式的数组,代表一段数字区间, 如[1,3]表示从1到3之间的任何数字

判断给定的新数字区间new_element(例如: [10, 25])能不能添加到列表a中,返回true or false

要求任何被添加进入列表a的新数字区间,必须满足以下条件:

  • 新插入的数字区间[x,y]中,y必须大于x
  • 列表a中每一组数字区间不能存在重叠区域
  • 例如[3, 5]和[7, 8]之间没有重叠,但是[3,5]和[4,6]有重叠的区域(注意: [3, 5]和[5, 6]之间认为是无重叠)

可以得知区间重叠的形式只有四种

在列表里添加不重叠的区间


a = [
    [6, 6.9],
    [3, 5.6],
    [12, 22],
    [37.5, 97.8]
]


def can_add_in(a, new_element):
    #   y 必须大于 x
    if new_element[1] <= new_element[0]:
        return false

    #   和已存在的每个区间进行比较
    for i in a:
        # print(i)
        #   1 和 4   的情况:新区间的起始在已有区间内
        if i[1] > new_element[0] and i[0] <= new_element[0]:
            return false
        #   2 和 3   的情况:已有区间的起始在新区间内
        elif i[0] >= new_element[0] and i[0] < new_element[1]:
            return false

    return true


print(can_add_in(a, [6.9, 12]))