日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【牛客网】马三来刷题之顺时针旋转矩阵

發布時間:2023/12/16 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【牛客网】马三来刷题之顺时针旋转矩阵 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目鏈接: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; }
每天一道題,保持新鮮感,就這樣~

總結

以上是生活随笔為你收集整理的【牛客网】马三来刷题之顺时针旋转矩阵的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。