顺时针打印矩阵

顺时针打印矩阵

http://www.nowcoder.com/questionTerminal/9b4c81a02cd34f76be2659fa0d54342a

用一个二维标记数组来标记访问过的数据

class Solution {
public:
    vector<int> printMatrix(vector<vector<int> > matrix) {
        int row = matrix.size(), col = matrix[0].size();
        vector<vector<int> > visited(row, vector<int> (col, 0));
        vector<int> print_res;
        int x = 0, y = -1;
        bool flag = true;
        while(true)
        {
            if(y + 1 < col && visited[x][y + 1] == 0 && !(x - 1 > 0 &&
            visited[x - 1][y] == 0))
            {
                print_res.push_back(matrix[x][++y]);
                visited[x][y] = 1;
                continue;
            }
            if(x + 1 < row && visited[x + 1][y] == 0)
            {
                print_res.push_back(matrix[++x][y]);
                visited[x][y] = 1;
                continue;
            }
            if(y - 1 >= 0 && visited[x][y - 1] == 0)
            {
                print_res.push_back(matrix[x][--y]);
                visited[x][y] = 1;
                continue;
            }
            if(x - 1 >= 0 && visited[x - 1][y] == 0)
            {
                print_res.push_back(matrix[--x][y]);
                visited[x][y] = 1;
                continue;
            }
            flag = false;
            if(!flag) break;
        }
        return print_res;
    }
};
全部评论

相关推荐

10-31 13:04
南华大学 Java
嵌入式的小白:很多面试,面试前不会去打扰cto的,但一般cto不会在这些小事上刷人,只能说这个cto比较操心,啥重要不重要,紧急不紧急的,估计都会过问,平淡看待吧
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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