1. 程式人生 > >leetcode-48 旋轉影象

leetcode-48 旋轉影象

給定一個 × n 的二維矩陣表示一個影象。

將影象順時針旋轉 90 度。

說明:

你必須在原地旋轉影象,這意味著你需要直接修改輸入的二維矩陣。請不要使用另一個矩陣來旋轉影象。

示例 :

給定 matrix = 
[
  [1,2,3],
  [4,5,6],
  [7,8,9]
]
原地旋轉輸入矩陣,使其變為:
[
  [7,4,1],
  [8,5,2],
  [9,6,3]
]
public void rotate(int[][] matrix) {
    int tR = 0;//行
    int tC = 0;//列
    int dR = matrix.length - 1;//行
    int dC = matrix[0].lenght - 1;//列
    while(tR < dR){
        rotateEdge(matrix, tR++, tC++, dR--, dC--);
    }
}
public static void rotateEdge(int[][] nums, int tR, int tC, int dR, int dC){
    int times = dC - tC;
    int temp = 0;
    for(int i = 0; i < times; i++){//交換四個點
        temp = nums[tR][tC + i];
        nums[tR][tC + i] = nums[dR - i][dC];
        nums[dR - i][dC] = nums[dR][dC - i];
        nums[dR][dC - i] = nums[tR + i][dC];
        nums[tR + i][dC] = temp;
    }
}