leetcode54:螺旋矩阵
生活随笔
收集整理的這篇文章主要介紹了
leetcode54:螺旋矩阵
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一:題目
二:上碼
class Solution { public:vector<int> spiralOrder(vector<vector<int>>& matrix) {vector<int> ans;int startx = 0,starty = 0;int n = matrix.size();//求出行int m = matrix[0].size();//求出列int loop = m/2 <= n/2 ? m/2 : n/2;//loop表示有幾圈int border = 1;//每次遍歷一行的邊界 具體看代碼int i,j;while(loop--){i = startx;j = starty;//取值上方 從左到右(左閉右開)for(j = starty; j < starty + m - border; j++){ans.push_back(matrix[i][j]);//行不變 列變}//取值右方 從上到下for(i = startx; i < startx + n - border; i++){ans.push_back(matrix[i][j]);//行變 列不變}//取值下方 從左到右for(; j > starty; j--){ans.push_back(matrix[i][j]);}//取值左方 從下到上for(; i > startx; i--){ans.push_back(matrix[i][j]);}startx++;starty++;border+=2;}if(n%2 != 0 || m%2 != 0){if(n < m && n % 2 != 0){//說明列多 當行少的時候,行不能為偶數 否則就是完整的圈數int mid = n/2;int len = mid + (m-n);for(int j = mid; j <= len; j++){//行不變 列在變ans.push_back(matrix[mid][j]);}}else if(n > m && m%2 != 0){//說明行多 當列多的時候,列不能為偶數 否則就是完整的圈數int mid = m/2;int len = mid + (n-m);for(int i = mid; i <= len; i++){ans.push_back(matrix[i][mid]);//列不變 行在變}}else if(m == n){//說明 n==mint mid = n/2;ans.push_back(matrix[mid][mid]);//當m 和 n都為奇數的時候 就剩下中間一個} }return ans;} };
這個比上個題需要注意的是 二維數組的行和列不相等,所以我們需要特殊處理。
總結
以上是生活随笔為你收集整理的leetcode54:螺旋矩阵的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: leetcode59:螺旋矩阵||(思路
- 下一篇: 减肥两个月后就不掉秤了怎么办