【python迅雷】合并区间?

题目:用x,y表示一个整数范围区间,现在输入一组这样的范围区间(用空格隔开),请输出这些区间的合并。

输出描述:  合并后的区间,用过空格隔开,行末无空格。

code:

def merge(intervals):

    """

    合并区间算法。

    :param intervals: 传入的区间数组。例如[[1, 3], [2, 5]]

    :return: 合并后的区间。例如[[1, 5]]

    """

    out = []

    for i in sorted(intervals, key=lambda i: i[0]):  # 对区间进行排序

        if out and i[0] <= out[-1][1]:  # 当前区间起始位置小于out最后一个元素的结束位置,这时就要进行合并

            out[-1][1] = max(out[-1][1], i[1])  # 合并区间。区间的结束位置 = max(当前遍历区间的结束位置,out最后一个区间的结束位置)

        else:

            out.append(i)  # 不需要合并时的处理。

    return out

# 将输入的字符串转换成区间形式放到intervals数组中。

intervals = []

for i in input().split():  # 切成"1,3"、"2,5"这种形式

    start, end = i.split(",")

    intervals.append([int(start), int(end)])

#

## 调用合并区间算法

out = merge(intervals)

# 输出处理。

res = ""

for i in out:

    res = res + str(i[0]) + "," + str(i[1]) + " "

print(res.rstrip(";"))


你可能感兴趣的:(【python迅雷】合并区间?)