天天看點

leetcode 中等難度 第59題 螺旋矩陣Ⅱ

給定一個正整數 n,生成一個包含 1 到 n2 所有元素,且元素按順時針順序螺旋排列的正方形矩陣。

一次通過,從外向内周遊就可以了。

class Solution {
    public int[][] generateMatrix(int n) {
        int [][] ans = new int [n][n];
        int start1 = 0 ;
        int end1 = n ;
        int start2 = 0;
        int end2 = n ;
        int num = 1 ;
        while(start1 <= end1 && start2 <= end2){
            for(int i = start1 ; i < end1 ; i ++){
                ans[start1][i] = num ;
                num++ ; 
            }
            start1 ++ ;

            for(int i = start1 ; i < end2;i++){
                ans[i][end2-1] = num;
                num++;
            }
            end2--;

            for(int i = end2-1 ; i > start2 ; i --){
                ans[end1-1][i] = num ;
                num ++ ;
            }
            end1 -- ;

            for(int i = end1 ; i >= start1 ; i --){
                ans[i][start2] = num ;
                num ++ ;
            }
            start2++ ;
        } 
        return ans ;
    }
}
           

分别标定四個邊界,一點一點的寫。就可以啦。