48.go 777 B

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