LeetCode-59.나선 행렬 II(관련 화제:수조)

1832 단어 LeetCodeJava
정수 n 을 지정 하여 1~n2 의 모든 요 소 를 포함 하고 요 소 는 시계 방향 으로 나선형 으로 배 열 된 정사각형 행렬 을 생 성 합 니 다.
예시:
  : 3
  :
[
 [ 1, 2, 3 ],
 [ 8, 9, 4 ],
 [ 7, 6, 5 ]
]

문제 풀이 방향:이 문제 와 LeetCode-54.나선형 행렬(블 로그:https://blog.csdn.net/weixin_38823568/article/details/81740369)와 유사 합 니 다.다른 점 은 변수 cnct=1 로 계산 한 다음 54.나선형 행렬 의 순서에 따라 배열 을 옮 겨 다 니 며 옮 겨 다 니 는 현재 위치 할당 값 은 cnct 입 니 다.
자바 코드:
class Solution {
    public int[][] generateMatrix(int n) {
        if(0 == n)
            return new int[][] {};
        int linemin = 1, linemax = n, colmin = 0, colmax = n, cnt = 1;
        int[][] res = new int[n][n];
        for(int i = 0; i < linemax; i++){
            for(int j = colmin; j < colmax; j++){
                    res[i][j] = cnt++;
                if(j == colmax-1){
                    colmax--;
                    for(int m = linemin; m < linemax; m++){
                            res[m][j] = cnt++;
                        if(m == linemax-1){
                            linemax--;
                            for(int o = colmax-1; o >= colmin; o--){
                                    res[m][o] = cnt++;
                                if(o == colmin){
                                    colmin++;
                                    for(int p = linemax-1; p >= linemin; p--){
                                            res[p][o] = cnt++;
                                        if (p == linemin) {
                                            linemin++;
                                            break;
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        return res;
    }
}

좋은 웹페이지 즐겨찾기