48.go 790 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. package main
  2. import (
  3. "fmt"
  4. )
  5. /**
  6. * '1' 2 '3' swap '7' 2 '1' next 7 '2' 1
  7. * 4 5 6 -----> 4 5 6 -----> '4' 5 '6' -> ...
  8. * '7' 8 '9' '9' 8 '3' 9 '8' 3
  9. */
  10. func rotate(matrix [][]int) {
  11. side := len(matrix) - 1
  12. for i := 0; i <= side/2; i++ {
  13. for j := 0; j < side-2*i; j++ {
  14. matrix[i][i+j], matrix[i+j][side-i], matrix[side-i][side-i-j], matrix[side-i-j][i] = matrix[side-i-j][i], matrix[i][i+j], matrix[i+j][side-i], matrix[side-i][side-i-j]
  15. }
  16. }
  17. }
  18. func main() {
  19. m1 := [][]int{
  20. {11, 22, 33, 44, 55},
  21. {16, 27, 38, 49, 50},
  22. {11, 23, 35, 47, 59},
  23. {12, 24, 36, 48, 50},
  24. {15, 24, 33, 42, 51},
  25. }
  26. rotate(m1)
  27. fmt.Println(m1)
  28. m2 := [][]int{
  29. {1, 2},
  30. {3, 4},
  31. }
  32. rotate(m2)
  33. fmt.Println(m2)
  34. m3 := [][]int{}
  35. rotate(m3)
  36. fmt.Println(m3)
  37. }