题解 | #螺旋矩阵#清晰易懂

螺旋矩阵

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

vector<int> spiralOrder(vector<vector<int> > &matrix) {
    if(matrix.empty()) return {};
    int a = matrix.size();
    int b = matrix[0].size();

    vector<int> result;
    int cicleNum = (min(a,b)+1)/2; //向下取整,代表循环几次

    int left = 0,top=0;
    int right = matrix[0].size()-1, bottom = matrix.size()-1;
    while(cicleNum--){ //顺时针
        for(int i = left;i<=right;i++)//从左到右
           result.push_back(matrix[top][i]);
        for(int j = top+1;j<=bottom;j++)//从上到下
            result.push_back(matrix[j][right]);
        for(int k = right-1;k>=left && top!=bottom;k--) //从右到左,注意 top!=bottom,防止重复
            result.push_back(matrix[bottom][k]);
        for(int l = bottom-1;l>top && left!=right;l--) //从下到上,注意 left!=right,防止重复
            result.push_back(matrix[l][left]);
        left++; right--; top++; bottom--;
    }
    return result;
}
全部评论

相关推荐

醉蟀:你不干有的是人干
点赞 评论 收藏
分享
强大的马里奥:不太可能,我校计算机硕士就业率99%
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
06-27 14:11
很喜欢小米的新车,校招薪资每月22k,攒多久能买?
测试糕手手:别看工资,先看现金流存款。有50W存款以上再考虑,车是消耗品,选适合自己的重要。你有钱就当我没说过
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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