Leetcode-Solutions

My Leetcode Solutions.

View on GitHub

452. Minimum Number of Arrows to Burst Balloons

Topics: Too many

Solution

先將 points 用 end 排序,每次選擇一個打擊點就選 last = point[1] 為射擊點,如果下一個 point 的 start <= last 就代表目前射擊點也可以打到下一個 point,接下來可以再看下一個有沒有符合這個條件。否則 start > last 的情況就打不到,那就更新 last = point[1] 並把射擊次數 +1。

Implementation

class Solution {
    fun findMinArrowShots(points: Array<IntArray>): Int {
        val sortedPoints = points.sortedBy { it[1] }
        var shots = 1
        var last = sortedPoints[0][1]

        for (point in sortedPoints) {
            if (point[0] > last) {
                last = point[1]
                shots++
            }
        }

        return shots
    }
}