题解 | #螺旋矩阵#

螺旋矩阵

http://www.nowcoder.com/practice/7edf70f2d29c4b599693dc3aaeea1d31

class Solution {
public:
    vector<int> spiralOrder(vector<vector<int> >& matrix) {
        vector<int> ans;
        if(matrix.size() == 0)
            return ans;
        int startrow = 0, row = matrix.size(), col = matrix[0].size();
        int num = row * col;  //计算数字总数
        int startcol = 0, circle = 0;  //circle记录圈数
        while (num) {
            circle++;
            for (int i = startcol; i < col - circle; ++i) {
                ans.push_back(matrix[startrow][i]);
                num--;
            }
            startcol = col - circle;
            for (int i = startrow; num && i < row - circle; ++i) {
                ans.push_back(matrix[i][startcol]);
                num--;
            }
            startrow = row - circle;
            for (int i = startcol; num && i >= circle - 1; --i) {
                ans.push_back(matrix[startrow][i]);
                num--;
            }
            startrow--;
            startcol = circle - 1;
            for (int i = startrow; num && i >= circle; --i) {
                ans.push_back(matrix[i][startcol]);
                num--;
            }
            startrow = circle;
            startcol = circle;
        }
        return ans;
    }
};
全部评论

相关推荐

03-08 18:11
门头沟学院 Java
想要实习的牛:这么牛逼的简历都吃瘪吗🌚那我不寄了
点赞 评论 收藏
分享
肖先生~:大一点得到公司面试更能学到点东西
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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