Spiral Matrix II (LeetCode)

Question:

https://oj.leetcode.com/problems/spiral-matrix-ii/

 

解答:

跟spiral matrix类似,只不过一个是读,一个是写。

 

class Solution {
public:
    vector<vector<int> > generateMatrix(int n) {
        
        int index_start = 0;
        int index_end = n-1;
        int number = 1;
        
        vector<vector<int>> matrix(n, vector<int>(n, 0));
        
        while (index_start <= index_end)
        {
            number = generate(matrix, index_start, index_end, index_start, index_end, number);
            
            index_start++;
            index_end--;
        }
        
        return matrix;
    }
    
    int generate(vector<vector<int>>& matrix, int row_start, int row_end, int col_start, int col_end, int number)
    {
        for (int i = col_start; i <= col_end; i++)
            matrix[row_start][i] = number++;
            
        for (int i = row_start+1; i <= row_end-1; i++)
            matrix[i][col_end] = number++;
            
        if (row_start != row_end)
        {
            for (int i = col_end; i >= col_start; i--)
                matrix[row_end][i] = number++;
        }
        
        if (col_start != col_end)
        {
            for (int i = row_end-1; i >= row_start+1; i--)
                matrix[i][col_start] = number++;
        }
        
        return number;
    }
};

 

posted @ 2014-11-19 14:27  smileheart  阅读(132)  评论(0)    收藏  举报