首页 » 编程之美 » 正文

[leetcode_54]Spiral Matrix

螺旋输出矩阵 注意一行和一列的边界情况

class Solution {
public:
    vector<int> spiralOrder(vector<vector<int> > &matrix) {
        vector<int>ans;
        ans.clear();
        if(matrix.size() <= 0)return ans;
        int count = 0;
        int sum = matrix.size() * matrix[0].size();
        int px = 0;
        int py = 0;</p>

<pre><code>    int xa = 0;
    int xb = matrix.size()-1;
    int ya = 0;
    int yb = matrix[0].size()-1;

    int dir = 0;
    while(count &amp;lt; sum) {
        ans.push_back(matrix[px]1);
        switch(dir) {
            case 0: 
                if(py == yb) {
                    dir++;
                    dir %= 4;
                    xa++;
                    px++;
                    break;
                }
                py++;
                if(py == yb) {
                    dir++;
                    dir %= 4;
                    xa++;
                }
                break;
            case 1:
                if(px == xb) {
                    dir++;
                    dir %= 4;
                    yb--;
                    py--;
                    break;
                }
                px++;
                if(px == xb) {
                    dir++;
                    dir %= 4;
                    yb--;
                }
                break;  
            case 2:
                if(py == ya) {
                    dir++;
                    dir %= 4;
                    xb--;
                    px--;
                    break;
                }
                py--;
                if(py == ya) {
                    dir++;
                    dir %= 4;
                    xb--;
                }
                break;
            case 3:
                if(px == xa) {
                    dir++;
                    dir %= 4;
                    ya++;
                    py++;
                    break;
                }
                px--;
                if(px == xa) {
                    dir++;
                    dir %= 4;
                    ya++;
                }
                break;
        }
        count++;
    }
    return ans;
}
</code></pre>

<p>};

发表评论