順時針旋轉矩陣
阿新 • • 發佈:2017-07-26
編寫 eight pre ret -c article ++ nbsp 初始
題目描述
有一個NxN整數矩陣,請編寫一個算法,將矩陣順時針旋轉90度。
給定一個NxN的矩陣,和矩陣的階數N,請返回旋轉後的NxN矩陣,保證N小於等於300。
測試樣例:[[1,2,3],[4,5,6],[7,8,9]],3
返回:[[7,4,1],[8,5,2],[9,6,3]]
class Rotate { public: vector<vector<int> > rotateMatrix(vector<vector<int> > mat, int n) { // write code here vector<vector<int> > mbt; int d=n-1; for(int i=0;i<n;i++,d--) for(int j=0;j<n;j++) mbt[j][d]=mat[i][j]; for(int i=0;i<n;i++) for(int j=0;j<n;j++) mat[i][j]=mbt[i][j]; return mbt; } };
運行錯誤:請檢查是否存在數組、列表等越界非法訪問,內存非法訪問等情況
通過查找,原來是初始化二維數組時候出現了問題,應該如右所示,然後運行正確。vector<vector<int> > mbt(n,vector<int>(n));
下面的思路是一種簡單思路。
class Rotate { public: vector<vector<int> > rotateMatrix(vector<vector<int> > mat, int n) { // write code here vector<vector<int> > ans(n); for(int i = 0; i < n; ++i) { for(int j = n - 1; j >= 0; --j) { ans[i].push_back(mat[j][i]); } } return ans; } };
矩陣順時針旋轉90度http://blog.csdn.net/friendan/article/details/8824682
順時針旋轉矩陣