【剑指offer】顺时针打印矩阵

题目链接:顺时针打印矩阵

 

题意:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字.

 

题解:画个图。模拟。

1  2  3  4

5  6  7  8

9  10  11  12

13  14  15  16

输出 1 2 3 4 8 12 16 15 14 13 9 5 6 7 11 10

 

发现规律,从左向右走,再从上向下走,再从右向左走,再从下向上走。然后重复这个过程。


 

代码:

 1 class Solution {
 2 public:
 3     vector<int> printMatrix(vector<vector<int> > matrix) {
 4         vector<int> ans;
 5         if(matrix.empty())    return ans;
 6         int l=0,r=matrix[0].size()-1,up=0,down=matrix.size()-1;
 7         while(1){
 8             for(int i = l; i <=r; i++)    ans.push_back(matrix[up][i]);
 9             if(++up > down)    break;
10             
11             for(int i = up; i <= down; i++)    ans.push_back(matrix[i][r]);
12             if(--r < l)    break;
13             
14             for(int i = r; i >= l; i--)    ans.push_back(matrix[down][i]);
15             if(--down < up)    break;
16             
17             for(int i = down; i >= up ;i--)    ans.push_back(matrix[i][l]);
18             if(++l > r) break;
19         }
20         return ans;
21     }
22 };

 

posted @ 2020-03-03 18:15  甜酒果。  阅读(114)  评论(0编辑  收藏  举报