博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode 218: The Skyline Problem
阅读量:5907 次
发布时间:2019-06-19

本文共 1483 字,大约阅读时间需要 4 分钟。

Note:

1. There is a trick here: As it only gets the starting point, we can check each bound of the building. Also we have to have a "sign" to know when the bound is start when the bound is end.

2. REMEMBER to add 0 to the queue to avoid NPE. Also 0 represents there is no building there.

class Solution {    public List
getSkyline(int[][] buildings) { if (buildings.length == 0) { return new ArrayList<>(); } List
result = new ArrayList<>(); List
height = new ArrayList<>(); for (int[] building : buildings) { height.add(new int[]{building[0], -building[2]}); height.add(new int[]{building[1], building[2]}); } Collections.sort(height, (b1, b2) -> {
return b1[0] == b2[0] ? b1[1] - b2[1] : b1[0] - b2[0];}); PriorityQueue
queue = new PriorityQueue<>((i1, i2) -> (i2 - i1)); queue.offer(0); int prev = 0; for (int[] vertical : height) { if (vertical[1] < 0) { queue.offer(-vertical[1]); } else { queue.remove(vertical[1]); } int current = queue.peek(); if (prev != current) { result.add(new int[]{vertical[0], current}); prev = current; } } return result; }}

 

转载于:https://www.cnblogs.com/shuashuashua/p/7473345.html

你可能感兴趣的文章
Linux 小知识翻译 - 「协议(protocol)」
查看>>
数据仓库与数据挖掘的一些基本概念
查看>>
tungsten
查看>>
Linux系统攻略 用UUID在Fstab中挂载分区
查看>>
如何将经纬度利用Google Map API显示C# VS2005 Sample Code
查看>>
EditText 限制输入,自定义样式,监听输入的字符,自动换行
查看>>
【LAMP】在Debian系linux下安装LAMP
查看>>
改成maven工程
查看>>
平衡工作与生活的艺术——GTD简单介绍
查看>>
apache2.2 虚拟主机配置
查看>>
关于android:configChanges的属性
查看>>
iotop
查看>>
angular多个控制器如何共享数据
查看>>
Ogre Compositor解析
查看>>
SQLServer 2008以上误操作数据库恢复方法——日志尾部备份
查看>>
[转]强制取消TFS2008中其它成员的签出文件
查看>>
CSS SANS – 神奇!使用 CSS3 创建的字体
查看>>
很好的理解遗传算法的样例
查看>>
android安卓系统上运行jar文件
查看>>
HttpClient使用线程锁synchronized
查看>>