Skip to content

Latest commit

 

History

History

2015.Average-Height-of-Buildings-in-Each-Segment

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

2015.Average-Height-of-Buildings-in-Each-Segment

本题显然是扫描线的解法。我们只关心那些建筑两边的边缘线位置。对于每处边界,要么增加一幢楼:楼的总高度和楼的总数量都会变大;要么减少一幢楼:楼的总高度和楼的总数量都会变小。所以本题在每处边界,需要考虑两个差分量:分别反映楼的总高度的变化heightDiff,和当前楼的数量的变化countDiff。

因为同一处位置可能是多幢楼的边界,我们先用map,将同一处位置的这两个差分量做累积。然后按照位置排序后,用积分走一遍得到当前的height和count,就可以得到每个区段的平均值。

最后记得要把相邻的、平均值相等的区间要合并。平均值为零的区间也要舍弃。