程式設計題day11
阿新 • • 發佈:2018-11-02
題目描述
有一副由NxN矩陣表示的影象,這裡每個畫素用一個int表示,請編寫一個演算法,在不佔用額外記憶體空間的情況下(即不使用快取矩陣),將影象順時針旋轉90度。
給定一個NxN的矩陣,和矩陣的階數N,請返回旋轉後的NxN矩陣,保證N小於等於500,影象元素小於等於256。
測試樣例:
[[1,2,3],[4,5,6],[7,8,9]],3
返回:[[7,4,1],[8,5,2],[9,6,3]]
https://www.nowcoder.com/practice/17ab1e527c504df09a600e1af09d9a60?tpId=8&&tqId=10999&rp=1&ru=/activity/oj&qru=/ta/cracking-the-coding-interview/question-ranking
import java.util.*;
public class Transform {
public int[][] transformImage(int[][] mat, int n) {
// write code here
for(int i=0;i<n-1;i++){//次對角線上下元素互換
for(int j=0;j<n-i-1;j++){
mat[i][j] =mat[n-j-1][n-i-1]+mat[i][j];
mat[n-j-1][n-i-1]=mat[i][j]-mat[ n-j-1][n-i-1];
mat[i][j]=mat[i][j]- mat[n-j-1][n-i-1];
}
}
for(int i=0;i<n/2;i++){//調換第i行和n-i-1行
for(int j=0;j<n;j++){
mat[i][j] =mat[n-i-1][j]+mat[i][j];
mat[n-i-1][j]=mat[i][j]-mat[n-i-1][j];
mat[i][j]=mat[i][j]- mat[n-i-1][ j];
}
}
return mat;
}
}