1class Solution:2def getSkyline(self, buildings: List[List[int]]) -> List[List[int]]:3d = collections.defaultdict(list)45for i, (start, end, height) in enumerate(buildings):6d[start].append(height)7d[end].append(-height)89l = list(d.keys())10l.sort()1112result = []1314active = []1516for key in l:17o = d[key]18o.sort(reverse=True)19for j in o:20if j > 0:21if not result or not active:22result.append([key, j])23active.append(j)24else:25if j > active[-1]:26result.append([key, j])27active.append(j)28else:29active.insert(bisect_left(active, j), j)30else:31idx = active.index(-j)32if idx == len(active) - 1:33active.pop()34if active:35result.append([key, active[-1]])36else:37result.append([key, 0])38else:39active.pop(idx)4041return result