|  | @@ -0,0 +1,27 @@
 | 
	
		
			
				|  |  | +type arr2d [][]int
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +func (a arr2d) Len() int           { return len(a) }
 | 
	
		
			
				|  |  | +func (a arr2d) Less(i, j int) bool { return a[i][0] < a[j][0] }
 | 
	
		
			
				|  |  | +func (a arr2d) Swap(i, j int)      { a[i], a[j] = a[j], a[i] }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +func findMinArrowShots(points [][]int) (cnt int) {
 | 
	
		
			
				|  |  | +	n := len(points)
 | 
	
		
			
				|  |  | +	if n <= 1 {
 | 
	
		
			
				|  |  | +		return n
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	sort.Sort(arr2d(points))
 | 
	
		
			
				|  |  | +	beg, end := points[0][0], points[0][1]
 | 
	
		
			
				|  |  | +	for i := 1; i < n; i++ {
 | 
	
		
			
				|  |  | +		if b, e := points[i][0], points[i][1]; beg <= b && b <= end {
 | 
	
		
			
				|  |  | +			beg = b
 | 
	
		
			
				|  |  | +			if e < end {
 | 
	
		
			
				|  |  | +				end = e
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  | +		} else {
 | 
	
		
			
				|  |  | +			cnt++
 | 
	
		
			
				|  |  | +			beg, end = b, e
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	cnt++
 | 
	
		
			
				|  |  | +	return
 | 
	
		
			
				|  |  | +}
 |