题目:
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字;,例如,如果输入如下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.
方法一:标记数组法
基本思路:使用dx和dy用来表示前进的方向;其中分别表示向右,向下、向左、向上;使用flag用来标记该位置的树是否被存入;dir用于更改方向的参数,即每次走到头了,修改dir;进行下一个方向;
遍历顺序为:向右---->向下—>向左----->向上–>向右;
外层循环每次先存入遍历方向的第一个数;在进入内层循环,判断x和y加上方向的数;
时间复制度为O(n*m);空间复杂度为O(n)
class Solution {
public:
vector<int> printMatrix(vector<vector<int> > matrix) {
//标记数组法
int m=matrix.size();
int n=matrix[0].size();
vector<int> dx={
0,1,0,-1};
vector<int> dy={
1,0,-1,0};
vector<vector<bool> > flag(m,vector<bool>(n));
for(