class Solution {
    public int findMinArrowShots(int[][] points) {
        if(points.length == 0) {
            return 0;
        }
        
        Arrays.sort(points, Comparator.comparingInt(o -> o[1]));
        
        final int len = points.length;
        int cnt = 1;
        int end = points[0][1];
        
        for(int i = 1; i < len; i++) {
            if(points[i][0] <= end) {
                continue;
            }
            ++cnt;
            end = points[i][1];
        }
        
        return cnt;
    }
}