优化merge_intervals问题(使用的bfs)

时间:2019-06-28 16:59:09

标签: python breadth-first-search

我正在研究合并重叠间隔的问题: 问题链接:https://www.geeksforgeeks.org/merging-intervals/

我尝试针对此问题实施bfs,因为.....为什么不这样做?

我发现的解决方案很好用。当数据集很大时会出现问题。与解决此问题的其他方法相比,它变得相对缓慢。我想尽可能地优化此代码,所以它不会那么慢。

我已经尝试使用字典查找,设置查找以检查是否访问了该节点。尽管如此,该解决方案仍未显示出明显的改进。请建议我如何快速。我认为它当前正在O(nlogn)+ O(n)

中运行
def merge_graph(intervals,visited,i):
    #print ("-----")
    q=deque()
    q.append((intervals[i][0],intervals[i][1]))
    visited.add(i)
    temp_result=[]
    #temp_result.append(intervals[i][0])
    start_lim=sys.maxsize
    end_lim=-sys.maxsize
    while q:
        #print (q)
        left,right=q.popleft()
        start_lim=min(start_lim,left)
        end_lim=max(end_lim,right)
        for j in range(len(intervals)):
            if j not in visited and right>=intervals[j][0] and left<=intervals[j][1]:
                visited.add(j)
                q.append((intervals[j][0],intervals[j][1]))
    temp_result.append(start_lim)
    temp_result.append(end_lim)
    return (temp_result)
n=len(intervals)
visited=[0]*(n+1)
#uncomment this line for result is sorted order
#intervals.sort()
merged_intervals=[]
visited=set()
for i in range(n):
    if i not in visited:
        merged_intervals.append(merge_graph(intervals,visited,i))
return (merged_intervals)

0 个答案:

没有答案