452.minimum-number-of-arrows-to-burst-balloons.go 560 B

123456789101112131415161718192021222324252627
  1. type arr2d [][]int
  2. func (a arr2d) Len() int { return len(a) }
  3. func (a arr2d) Less(i, j int) bool { return a[i][0] < a[j][0] }
  4. func (a arr2d) Swap(i, j int) { a[i], a[j] = a[j], a[i] }
  5. func findMinArrowShots(points [][]int) (cnt int) {
  6. n := len(points)
  7. if n <= 1 {
  8. return n
  9. }
  10. sort.Sort(arr2d(points))
  11. beg, end := points[0][0], points[0][1]
  12. for i := 1; i < n; i++ {
  13. if b, e := points[i][0], points[i][1]; beg <= b && b <= end {
  14. beg = b
  15. if e < end {
  16. end = e
  17. }
  18. } else {
  19. cnt++
  20. beg, end = b, e
  21. }
  22. }
  23. cnt++
  24. return
  25. }