题解 | #顺时针打印矩阵#

顺时针打印矩阵

https://www.nowcoder.com/practice/9b4c81a02cd34f76be2659fa0d54342a

class Solution {
public:
    vector<int> printMatrix(vector<vector<int> > matrix) {
        int up = 0 , left = 0;
        int down = matrix.size()-1 , right;
        if(down == -1) return {};
        else right = matrix[0].size()-1;   //特殊情况考虑
        vector<int> res;
        char flag = 'r';  //四种标志代表本次向哪个方向遍历
        while(up <= down && left <= right){  //边界模拟up down left right代表的是当前可遍历到的边界
            if(flag == 'r'){
                for(int i = left;i <= right;i++) res.push_back(matrix[up][i]);
                up++;
                flag = 'd';
            }
            else if(flag == 'd'){
                for(int i = up;i <= down;i++) res.push_back(matrix[i][right]);
                right--;
                flag = 'l';
            }
            else if(flag == 'l'){
                for(int i = right;i >= left;i--) res.push_back(matrix[down][i]);
                down--;
                flag = 'u';
            }
            else if(flag == 'u'){
                for(int i = down;i >= up;i--) res.push_back(matrix[i][left]);
                left++;
                flag = 'r';
            }
        }
        return res;
    }
};

全部评论

相关推荐

冲鸭2024:亚信不去也罢
投递亚信科技(中国)有限公司等公司6个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务