顺时针打印矩阵(牛客网)

思路:将左上和右下的坐标定位,依次旋转打印出数据,一次旋转后,就将坐标分别前进和后退一个单位,把要打印的数据范围缩小。
这里写图片描述
实现代码:

class Solution {
public:
    vector<int> printMatrix(vector<vector<int> > matrix) {
        int left=0;
        int right=matrix[0].size()-1;
        int top=0;
        vector<int> res;
        int i=0;
        int down=matrix.size()-1;
        if(matrix.size()==0||matrix[0].size()==0){
            return res;
        }
        while(left<=right&&top<=down){
            for( i=left;i<=right;i++){
                res.push_back(matrix[top][i]);
            }
            for(i=top+1;i<=down;i++){
                res.push_back(matrix[i][right]);
            }
            if(top!=down){
            for(i=right-1;i>=left;i--){
                res.push_back(matrix[down][i]);
            }
            }
            if(right!=left){//此处判断是为了防止单行或者单列的情况
            for(i=down-1;i>top;i--){
                res.push_back(matrix[i][left]);
            }
            }
               left++;
                top++;
                right--;
                down--;
        }
        return res;
    }
};

猜你喜欢

转载自blog.csdn.net/cx2479750196/article/details/80567858