我正在研究合并重叠间隔的问题: 问题链接: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)