zoukankan      html  css  js  c++  java
  • LeetCode 59. 螺旋矩阵 II

    59. 螺旋矩阵 II

    LeetCode59. Spiral Matrix II

    题目描述
    给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。

    输入: 3
    输出:

    [
     [ 1, 2, 3 ],
     [ 8, 9, 4 ],
     [ 7, 6, 5 ]
    ]
    

    Java 实现

    import java.util.Scanner;
    
    public class Solution {
        public static int[][] generateMatrix(int n) {
            int[][] res = new int[n][n];
            int m = 1;
            /* 四个循环按不同的方向进行 */
            for (int i = 0; i < n / 2; i++) {
                for (int j = i; j < n - i; j++) {
                    res[i][j] = m++;
                }
                for (int j = i + 1; j < n - i; j++) {
                    res[j][n - i - 1] = m++;
                }
                for (int j = n - i - 2; j >= i; j--) {
                    res[n - i - 1][j] = m++;
                }
                for (int j = n - i - 2; j > i; j--) {
                    res[j][i] = m++;
                }
            }
            /* 如果是单数的话,要加上最大的那个数放在中间 */
            if (1 == n % 2) {
                res[n / 2][n / 2] = m;
            }
            return res;
        }
    
        public static void show(int[][] res) {
            for (int[] x : res) {
                for (int y : x) {
                    System.out.printf("%4d", y);
                }
                System.out.println();
            }
        }
    
        public static void main(String[] args) {
            Scanner scan = new Scanner(System.in);
            int n = scan.nextInt();
            int[][] res = generateMatrix(n);
            show(res);
        }
    }
    

    运行结果
    输入 1

       1
    

    输入 2

       1   2
       4   3
    

    输入 3

       1   2   3
       8   9   4
       7   6   5
    

    输入 4

       1   2   3   4
      12  13  14   5
      11  16  15   6
      10   9   8   7
    

    输入 5

       1   2   3   4   5
      16  17  18  19   6
      15  24  25  20   7
      14  23  22  21   8
      13  12  11  10   9
    

    输入 6

       1   2   3   4   5   6
      20  21  22  23  24   7
      19  32  33  34  25   8
      18  31  36  35  26   9
      17  30  29  28  27  10
      16  15  14  13  12  11
    

    参考资料

  • 相关阅读:
    Android Architecture Components
    adb命令
    Dagger2 scope
    Dagger2学习资源
    Dependency Injection学习笔记
    什么是ADB
    使用AndroidStudio dump heap,再用 Eclipse MAT插件分析内存泄露
    Dagger学习笔记
    linux & shell & nginx & Docker Kubernetes
    Go 目录
  • 原文地址:https://www.cnblogs.com/hgnulb/p/9904327.html
Copyright © 2011-2022 走看看