题目描述
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 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.
这道题和2018blibli笔试题是一个类型的(几乎是一样的):
常规解题思路:加上一个vis数组用来判断是否遍历过此点,再加上一个大的控制结束的循环和4个方向的循环就可解题
class Solution {public: vector printMatrix(vector>a) { int vis[100][100]={ 0}; int i=0,j=0; int s=0; int rows=a.size(),cols=a[0].size(); vector result;//结果向量保存输出结果 while(s!=rows*cols){ while(j =0&&vis[i][j]==0){ //turn left,注意j>=0,最开始鞋厂j>0害我检查半天 result.push_back(a[i][j]); vis[i][j]=1; s++;j--; }j++;i--; while(i>=0&&vis[i][j]==0){ //turn right,注意j>=0,最开始鞋厂i>0害我检查半天 result.push_back(a[i][j]); vis[i][j]=1; s++;i--; }i++;j++; }return result; }};