顺时针打印数组

首先摆明重要性

来源:https://www.nowcoder.com/discuss/390079

顺时针打印数组_第1张图片

传送门LeetCode54:https://leetcode-cn.com/problems/spiral-matrix/

class Solution {
public:
    vector spiralOrder(vector> &matrix) {
        vector res;
        int n = matrix.size();
        if(!n) return res;      //判断输入的矩阵是否为空?
        int m = matrix[0].size();

        vector< vector> st(n,vector(m,false));//定义二维数组 记录每个数的状态
        //上 右 下 左
        int dx[4]={-1,0,1,0},dy[4]={0,1,0,-1};

        int x = 0,y = 0,d = 1;//初始的时候在[0][0]位置,并且向右

        for(int i=0;i=n || b<0 || b>=m || st[a][b]==true)//已经出界
            {
                d = (d+1)%4;
                a = x + dx[d],b = y + dy[d];//重新计算下一个点的坐标
            }

            x = a, y = b;
        }

        return res;
    }
};

 

你可能感兴趣的:(剑指offer)