59. 螺旋打印情况

i 代表一圈,j 从用来上下左右移动,主要是控制 i 与j 的参数关系就ok了 ,另一个是注意如何初始化

  1. 从左上角到右上角

while(j

  1. 从右上角到右下角
    while(j

  2. 从右下角到左下角

while(j>i)

  1. 从左下角到左上角
    while(j>i)

59. 螺旋打印情况_第1张图片

class Solution {
    public int[][] generateMatrix(int n) {
        int [][] result = new int [n][n];
        // i代表是第几行数的基本情况,情况
        int k=1,i=0;
        
        //  每次都代表走一个圈
        // 然后里面永远都是一个正方形的基本情况
        //n- i-1 dai
        while(k<=n*n){
        // 每次初始化都是j
            int j =i;
            while(j<n-i)
                result[i][j++]= k++;
            // 代表多加了一行的情况的基本情况;
            j = i+1;
            while(j<n-i)
                result[j++][n-i-1]=k++;
            //该种情况, 处理转角处的地方情况
        // 所以将 j =n- i-2 增加减1, 
            j= n-i-2;
            // 因为j>i所有还是没出处理到边角的基本情况
            while(j>i)
                result[n-i-1][j--]=k++;
            
            j = n-i-1;
            while(j>i)
                result[j--][i]=k++;
            
            // 
            i++;
            //  情况
        }
        return result;
    }
}

你可能感兴趣的:(Java,Leetcode,数组)