【代码随想录】3.4 059 螺旋矩阵 2

import java.util.Scanner;

public class N059 {
    public static int[][] generateMatrix(int n) {
        int[][] ans = new int[n][n];

        // start
        int xStart = 0, yStart = 0;

        // offset
        int offset = 1;

        // loop
        int loop = n / 2;

        // count
        int count = 1;

        while(loop > 0){
            int i = xStart, j = yStart;
            // 4 for loop
            for(;j < yStart + n - offset; ++j){
                ans[i][j] = count++;
            }
            for(;i < xStart + n - offset; ++i){
                ans[i][j] = count++;
            }
            for(;j > yStart; --j){
                ans[i][j] = count++;
            }
            for(;i > xStart; --i){
                ans[i][j] = count++;
            }
            xStart += 1;
            yStart += 1;

            offset += 2;
            // 第几圈减少
            loop--;
        }

        if(n % 2 == 1){
            ans[n / 2][n / 2] = count;
        }
        return ans;
    }

    public static void main(String[] args){

        //Scanner scanner = new Scanner(System.in);
        Scanner scanner = new Scanner("7");

        int n = scanner.nextInt();

        int[][] result = generateMatrix(n);

        for(int i = 0; i < n; ++i){
            for(int j = 0; j < n; ++j){
                System.out.printf("%d", result[i][j]);
                if(j < n - 1){
                    System.out.print(" ");
                }
            }
            System.out.println();

        }

        scanner.close();
    }



}
posted @ 2026-01-09 01:06  pangeding  阅读(4)  评论(0)    收藏  举报