美文网首页
10.Spiral Matrix

10.Spiral Matrix

作者: Anaven | 来源:发表于2017-01-02 16:03 被阅读0次

https://leetcode.com/problems/split-array-largest-sum/

class Solution {
public:
    int d[2][4] = {{1, 0, -1, 0}, {0, 1, 0, -1}};

    vector<int> spiralOrder(vector<vector<int>>& matrix) {
        vector<int> sol;
        
        int m = matrix.size();
        if (m == 0) {
            return sol;
        }
        int n = matrix[0].size();
        if (n == 0) {
            return sol;
        }
        
        vector<vector<int>> isUsed(m, vector<int>(n, 0));
        
        int x = -1;
        int y = 0;
        int dir = 0;
        int count = m * n;
        
        while (count > 0) {
            int nx = x + d[0][dir];
            int ny = y + d[1][dir];
            
            if (nx < 0 || nx >= n || ny < 0 || ny >= m || isUsed[ny][nx] == 1) {
                dir = (dir + 1) % 4;
                continue;
            }

            count--;
            x = nx;
            y = ny;
            isUsed[y][x] = 1;
            sol.push_back(matrix[y][x]);
        }    
        
        return sol;
    }
};

相关文章

网友评论

      本文标题:10.Spiral Matrix

      本文链接:https://www.haomeiwen.com/subject/blbwvttx.html