1. 程式人生 > 其它 >LeetCode 48.旋轉影象

LeetCode 48.旋轉影象

技術標籤:學習javaleetcode數學

解題思路

設圖形旋轉點為(0,0),圖形中點(x,y)在旋轉後坐標(x’,y’),有
x’=y
y’=-x
根據如上規律,把矩陣放到座標系裡面。n為奇數時 x=y=(n-1)/2就是中心點。將中心點歸到原點,其他二維陣列都減去都減去此值。
最後一層一層往裡面應用上面的規律,首先是(0,0)然後(0,1)。。。。外層算完接著算裡面一層(1,1)(1,2)…直到全部算完。

執行用時:0 ms, 在所有 Java 提交中擊敗了100.00%的使用者
記憶體消耗:38.5 MB, 在所有 Java 提交中擊敗了81.18%的使用者

程式碼

class Solution {
public void rotate(int[][] matrix) { int x = 0, y = 0; int x_ = 0; int y_ = 0; int t1 = 0; int t2 = 0; double center = (matrix.length - 1) / 2.0; for (int i = 0; i < (matrix.length >> 1); i++) { for (int j = 0; j < matrix.length -
((i << 1) + 1); j++) { x = i; y = j + i; x_ = y; y_ = (int) ((2 * center) - x); t1 = matrix[x_][y_]; matrix[x_][y_] = matrix[x][y]; x = x_; y = y_; x_ =
y; y_ = (int) ((2 * center) - x); t2 = matrix[x_][y_]; matrix[x_][y_] = t1; x = x_; y = y_; x_ = y; y_ = (int) ((2 * center) - x); t1 = matrix[x_][y_]; matrix[x_][y_] = t2; x = x_; y = y_; x_ = y; y_ = (int) ((2 * center) - x); matrix[x_][y_] = t1; } } } }