【牛客网】马三来刷题之顺时针旋转矩阵
生活随笔
收集整理的這篇文章主要介紹了
【牛客网】马三来刷题之顺时针旋转矩阵
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目鏈接:http://www.nowcoder.com/practice/2e95333fbdd4451395066957e24909cc?tpId=49&tqId=29373&rp=1&ru=/ta/2016test&qru=/ta/2016test/question-ranking
- 熱度指數:2065時間限制:3秒空間限制:32768K
- 本題知識點:?編程基礎
- ?算法知識視頻講解
題目描述
有一個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]] 其實用筆畫一下,找規律就可以了,見下圖:
左面的矩陣經過旋轉以后就變成了右面矩陣的樣子,可以發現mat[i][j]被旋轉到了mat[j][n-i-1]的位置,由此我們可以很快地寫出代碼:
vector<vector<int> > rotateMatrix(vector<vector<int> > mat, int n){vector<vector<int>> v(n,vector<int>(n));for(int i=0;i<n;i++)for(int j=0;j<n;j++)v[j][n-1-i]=mat[i][j];return v;}或者還可以這么想,如上圖,旋轉前,矩陣是按照打印順序1,由上至下一行一行打印的,旋轉以后可以發現打印的順序改變了,是按照打印順序2
來打印的,一列一列的由下至上的依次打印每個元素,因此我們新建一個矩陣,按照旋轉后的矩陣的打印次序,依次把元素填入新的矩陣就可以了。
vector<vector<int> > rotateMatrix(vector<vector<int> > mat, int n) {vector< vector<int> > v;for(int i=0; i<n; i++){vector<int> tmp;for(int j=n-1; j>=0; j--){tmp.push_back(mat[j][i]);}v.push_back(tmp);}return v; }
每天一道題,保持新鮮感,就這樣~
總結
以上是生活随笔為你收集整理的【牛客网】马三来刷题之顺时针旋转矩阵的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Flexsim Rack设置最底层Lev
- 下一篇: python battleship_一个