LeetCode---Spiral Matrix II

2014-11-24 08:59:04 · 作者: · 浏览: 1
Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order.
For example,
Given n = 3,
You should return the following matrix:
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]
java code:
public class Solution {  
    public int[][] generateMatrix(int n) {  
        // Note: The Solution object is instantiated only once and is reused by each test case.  
        int[][] res = new int[n][n];  
        if(n == 0) return res;  
        //res = new int[n][n];  
        int level = n / 2;  
        if(level == 0)  
        {  
            res[0][0] = 1;  
            return res;  
        }  
        int cnt = 1;  
        for(int i = 0; i < level; i++)  
        {  
            for(int j = i; j < n - i; j++)  
            {  
                res[i][j] = cnt++;  
            }  
            for(int j = i; j < n - i; j++)  
            {  
                if(res[j][n-i-1] != 0)  
                    continue;  
                res[j][n-i-1] = cnt++;  
            }  
            for(int j = n-1-i; j >
= 0; j--) { if(res[n-1-i][j] != 0) continue; res[n-1-i][j] = cnt++; } for(int j = n-1-i; j >= 0; j--) { if(res[j][i] != 0) continue; res[j][i] = cnt++; } } if(n % 2 == 1) { res[n / 2][n / 2] = cnt; } return res; } }