相关疑难解决方法(0)

如何组合重叠时间范围(时间范围联合)

我有一个包含多个时间范围的数组:

[Tue, 24 May 2011 08:00:00 CEST +02:00..Tue, 24 May 2011 13:00:00 CEST +02:00,
 Tue, 24 May 2011 16:30:00 CEST +02:00..Tue, 24 May 2011 18:00:00 CEST +02:00,
 Tue, 24 May 2011 08:00:00 CEST +02:00..Tue, 24 May 2011 09:00:00 CEST +02:00,
 Tue, 24 May 2011 15:30:00 CEST +02:00..Tue, 24 May 2011 18:00:00 CEST +02:00]
Run Code Online (Sandbox Code Playgroud)

我想获得具有重叠时间范围的相同数组,因此这种情况的输出将是:

[Tue, 24 May 2011 08:00:00 CEST +02:00..Tue, 24 May 2011 13:00:00 CEST +02:00,
 Tue, 24 May 2011 15:30:00 CEST +02:00..Tue, 24 May 2011 18:00:00 …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails

19
推荐指数
2
解决办法
5038
查看次数

在 Python 中合并重叠区间

我正在尝试解决一个需要合并重叠间隔的问题。 问题是

给定一个间隔集合,合并所有重叠的间隔。

例如,给定 [1,3],[2,6],[8,10],[15,18],返回 [1,6],[8,10],[15,18]。

我尝试了我的解决方案:

# Definition for an interval.
# class Interval:
#     def __init__(self, s=0, e=0):
#         self.start = s
#         self.end = e

class Solution:
    def merge(self, intervals):
        """
        :type intervals: List[Interval]
        :rtype: List[Interval]
        """
        start = sorted([x.start for x in intervals])
        end = sorted([x.end for x in intervals])
        
        merged = []
        j = 0
        new_start = 0
        
        for i in range(len(start)):
            if start[i]<end[j]:
                continue
            else:
                j = j + 1
                merged.append([start[new_start], end[j]])
                new_start …
Run Code Online (Sandbox Code Playgroud)

python algorithm merge overlap data-structures

5
推荐指数
1
解决办法
1万
查看次数