题解 | #螺旋矩阵#(设置四个方向的指针,每次向内循环,边界判断只有一行或一列的情况)

螺旋矩阵

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

class Solution {
public:
    vector<int> spiralOrder(vector<vector<int> > &matrix) {
        vector<int> ans;
        if(matrix.empty()) return ans;
        int m = matrix.size(), n = matrix[0].size();
        int left = 0, right = n-1, top = 0, bottom = m-1;
        while(left <= right && top <= bottom){
            for(int i = left; i <= right; i++){
                ans.push_back(matrix[top][i]);
            }
            for(int i = top+1; i <= bottom; i++){
                ans.push_back(matrix[i][right]);
            }
            // 一定要判断top==bottom,只有一行,此时不用再将这一行重复输出。 
            for(int i = right - 1; bottom != top && i >= left; i--){ 
                ans.push_back(matrix[bottom][i]);
            }
             // 同理判断left == right,只有一列,此时不用再将这一列重复输出。 
            for(int i = bottom -1; left!=right && i >= top + 1; i--){
                ans.push_back(matrix[i][left]);
            }
            ++top, --bottom, ++left, --right;
        }
        return ans;
    }
};
全部评论

相关推荐

Jing_Rainb...:小公司搞出大厂流程,要么是真缺技术大牛,要么是老板的偶像包袱😂…面完记得来更新后续!
点赞 评论 收藏
分享
10-09 17:17
已编辑
门头沟学院 Java
活泼的代码渣渣在泡池...:同学你好,我也是学院本,后天要面这个亚信科技,是实习,请问问题都啥样呀,我项目就做了网上的,这是第一次面试
投递多益网络等公司10个岗位
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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