题解 | #螺旋矩阵#

螺旋矩阵

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

class Solution {
public:
    vector<int> spiralOrder(vector<vector<int> > &matrix) {
        vector<int> result;
        int ranks=matrix.size();
        if (ranks == 0)
            return {};
        int columns=matrix[0].size();
        int left=0,right=columns-1,up=0,down=ranks-1;
        int count=0;
        while (true)
        {
            for(int i=left;i<=right;i++)
            {
                result.push_back(matrix[up][i]);
                count++;
                if (count == ranks*columns)
                    return result;
            }
            up++;

            for (int i = up; i <=down ; i++)
            {
                result.push_back(matrix[i][right]);
                count++;
                if (count == ranks*columns)
                    return result;
            }
            right--;

            for (int i = right; i >= left ; i--)
            {
                result.push_back(matrix[down][i]);
                count++;
                if (count == ranks*columns)
                    return result;
            }
            down--;

            for (int i = down; i >= up ; i--)
            {
                result.push_back(matrix[i][left]);
                count++;
                if (count == ranks*columns)
                    return result;
            }
            left++;
        }
    }
};
全部评论

相关推荐

巨人网络 测试 总包20左右
点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务