题解 | #螺旋矩阵#

螺旋矩阵

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

定义四个边界,逐渐变小,主要要以上和左作为基准,以及时时刻刻都要缩小边界,最后到中点的时候返回就行,执行顺序,是上,右,下,左。

class Solution {
public:
    vector<int> spiralOrder(vector<vector<int> > &matrix) {
        vector<int> result;

        if(matrix.size()==0){
            return result;
        }

        int top = 0, bottom = matrix.size()-1;
        int left = 0 , right = matrix[0].size()-1;

        while(top<(matrix.size()+1)/2&& left < (matrix[0].size()+1)/2){
            //top
            for(int i = left; i<=right;i++){
                result.emplace_back(matrix[top][i]);
            }
            //right

            for(int i = top +1; i <=bottom;i++){
                result.emplace_back(matrix[i][right]);
            }

            //bottom
            for(int i = right-1;i>=left&&bottom!=top;i--){
                 result.emplace_back(matrix[bottom][i]);
            }

            //left

            for(int i = bottom-1; i>=top +1 && left!= right ;i--){
                result.emplace_back(matrix[i][left]);
            }

                 top++; bottom--;left++;right--;

          }

            return result;

        }

};
算法解析 文章被收录于专栏

这里主要是算法岗的自我思路总结

全部评论

相关推荐

哞客37422655...:这就是真实社会,没有花里胡哨的安慰,让你感受到阶级分明,不浪费彼此时间。虽然露骨但是唉
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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