1. 程式人生 > >程式設計題day11

程式設計題day11

題目描述
有一副由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; } }