Thursday, November 24, 2016

Leetcode | Minimum Number of Arrows to Burst Balloons

就不贴题上来了,这道题是自己想出来的,对着家直讲题有灵感,开心。
先理解题意,很简单,题很长,有点烦,就是一堆气球,不管纵向高度,只管横向长度,用一个pair来表示,这个时候在x轴上会发射一堆shots, 只要发射shots的x坐标在一个气球的x1,x2之间,就能射中气球,一个shot可以射中多个气球,求最少需要多少个shot来射完所有的气球。

咋一看有点懵逼,不知道怎么下手,有个类似的文推是会议室问题,那个是求最多的overlapping然后求出所有需要的办公室。而射击气球问题是求所有最小能cover住所有气球的个数。

我的做法是,先判断所有有overlapping的气球,把它们都从数组里删除,相当于被扎灭了,同时结果数+1, 如果遇到单个的没有重叠的,也把气球扎破,结果数+1, 一直到气球都被扎破为止,返回结果。听上去还蛮简单的,但从想法到代码,还是稍微想了15分钟的样子。


No comments:

Post a Comment

Leetcode 316. Remove Duplicate Letters

 这道题表面问的是如何删除重复,实际在问如何从多个字符选取一个保留,从而让整个字符串按升序排列。那么策略就是对于高顺位的字符比如‘a',就要选靠前位置的保留,而低顺位字符如’z'则应该尽量选取靠后位置保留。 算法大概思路:每看到一个字符,我们要决定是否保留 1. ...