123456789101112131415161718192021222324252627 |
- 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
- }
|