题解 | #牛群的逆时针移动#

牛群的逆时针移动

https://www.nowcoder.com/practice/f4d434add8494befad8d9058baf6970a

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param matrix int整型vector<vector<>> 
     * @return int整型vector
     */
    vector<int> spiralOrder(vector<vector<int> >& matrix) {
        // write code here
        int row = matrix.size();
        vector<int> res;
        if(row == 0){
            return res;
        }
        if(row == 1){
            return matrix[0];
        }
        int col = matrix[0].size();
        int top = 0, left = 0, bottom = row - 1, right = col -1;
        while(top <= bottom && left <= right){
            //向下遍历
            for(int i = top; i <= bottom;i++){
                res.emplace_back(matrix[i][left]);
            }
            left ++;
            //向右遍历
            for(int i = left; i <= right;i++){
                res.emplace_back(matrix[bottom][i]);
            }
            bottom --;
            if(left <= right){
                //向上遍历
                for(int i = bottom; i >= top;i--){
                    res.emplace_back(matrix[i][right]);
                }
                right --;
                //向左遍历
                for(int i = right; i >= left;i--){
                    res.emplace_back(matrix[top][i]);
                }
                top ++;
            }
        }
        return res;
    }
};

全部评论

相关推荐

不愿透露姓名的神秘牛友
03-29 08:32
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务