[Leetcode]Spiral Matrix

Spiral Matrix My Submissions Question
Total Accepted: 45054 Total Submissions: 212085 Difficulty: Medium
Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral order.

For example,
Given the following matrix:

[
[ 1, 2, 3 ],
[ 4, 5, 6 ],
[ 7, 8, 9 ]
]
You should return [1,2,3,6,9,8,7,4,5].

Subscribe to see which companies asked this question

这道题考察细节实现,考察的程度要比二分查找及其变形要高一些
思路很简单,一层一层的扫描即可,但是实际中会遇到特殊情况。比如从右下往左下扫的时候,比如左下扫到左上的时候。可以考察下下面的几个例子,弄清楚扫的时候的障碍。
[[1,2,3,4]];
[[1],[2],[3],[4]];
以及[[1]].
下面贴上代码,这个是昨晚看了别人之后中午有空写的,用的还是别人的的思路,很是汗颜,对于这类细节实现题还是问题多多。

class Solution {
public:
    vector<int> spiralOrder(vector<vector<int>>& matrix) {
        vector<int> res;
        if(matrix.empty()) return res;

        int rowEnd = matrix.size() - 1;
        int colEnd = matrix[0].size() - 1;
        int rowBegin = 0;
        int colBegin = 0;

        while(rowBegin <= rowEnd && colBegin <= colEnd){
            for(int c = colBegin;c <= colEnd;++c){
                res.push_back(matrix[rowBegin][c]);
            }
            ++rowBegin;
            for(int r = rowBegin;r <= rowEnd;++r){
                res.push_back(matrix[r][colEnd]);
            }
            --colEnd;
            if(rowBegin <= rowEnd){
                for(int c = colEnd;c >= colBegin;--c){
                    res.push_back(matrix[rowEnd][c]);
                }
            }
            --rowEnd;
            if(colEnd >= colBegin){
                for(int r = rowEnd;r >= rowBegin;--r){
                    res.push_back(matrix[r][colBegin]);
                }
            }
            ++colBegin;
        }
        return res;
    }
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值