223.rectangle-area.go 506 B

1234567891011121314151617181920212223242526272829
  1. func computeArea(A int, B int, C int, D int, E int, F int, G int, H int) int {
  2. return areaOf(A, B, C, D) + areaOf(E, F, G, H) - overlap(A, C, E, G)*overlap(B, D, F, H)
  3. }
  4. func overlap(a1, a2, b1, b2 int) int {
  5. l := a2 - a1 + b2 - b1 - (maxInt(a2, b2) - minInt(a1, b1))
  6. if l < 0 {
  7. return 0
  8. }
  9. return l
  10. }
  11. func areaOf(A, B, C, D int) int {
  12. return (C - A) * (D - B)
  13. }
  14. func maxInt(x, y int) int {
  15. if x < y {
  16. return y
  17. }
  18. return x
  19. }
  20. func minInt(x, y int) int {
  21. if x < y {
  22. return x
  23. }
  24. return y
  25. }