|
@@ -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
|
|
|
+}
|