zoukankan      html  css  js  c++  java
  • Lc59_ 螺旋矩阵 II

    题目 59. 螺旋矩阵 II

    给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。
    示例:
    输入: 3
    输出:
    [
    [ 1, 2, 3 ],
    [ 8, 9, 4 ],
    [ 7, 6, 5 ]
    ]

     1public class GenerateMatrix {
    2
    3    public static void main(String[] args) {
    4        int[][] res = generateMatrix(4);
    5        for (int i = 0; i < res.length; i++) {
    6            for (int j = 0; j < res[i].length; j++) {
    7                System.out.print(res[i][j] + " ");
    8            }
    9            System.out.println();
    10        }
    11    }
    12
    13    public static int[][] generateMatrix(int n) {
    14        int[][] res = new int[n][n];
    15        //开始位置
    16        int startX = 0, startY = 0;
    17        //循环次数
    18        int loop = n / 2;
    19        //如果循环次数是奇数,那么会存在中心点,中心点是最后赋值,中心点位置
    20        int mid = n / 2;
    21        //每条边边界,每循环一圈就加2,因为进内圈需要加1,同时边界向内收缩1
    22        int offset = 1;
    23        //初始赋值
    24        int count = 1;
    25        //原则 左闭又开
    26        // 上面 从左右导游
    27        // 右边 从上到下
    28        // 下面 从右到在
    29        // 左边 从下到上
    30        while ((loop--) > 0) {
    31            int i = startX;
    32            int j = startY;
    33
    34            // 上面 从左右导游
    35            for (; j < startY + n - offset; j++) {
    36                res[startX][j] = count++;
    37            }
    38
    39            // 右边 从上到下
    40            for (; i < startX + n - offset; i++) {
    41                res[i][j] = count++;
    42            }
    43
    44            // 下面 从右到在
    45            for (; j > startY; j--) {
    46                res[i][j] = count++;
    47            }
    48
    49            // 左边 从下到上
    50            for (; i > startX; i--) {
    51                res[i][j] = count++;
    52            }
    53
    54            startX++;
    55            startY++;
    56            offset += 2;
    57
    58        }
    59
    60        if (n % 2 == 1) {
    61            res[mid][mid] = count;
    62        }
    63
    64        return res;
    65    }
    66}
    不会,我可以学;落后,我可以追赶;跌倒,我可以站起来!
  • 相关阅读:
    SVN相关
    Sublime text 2/3 中 Package Control 的安装与使用方法
    JavaScript 限制input输入类型(多种方法实现)
    yahoo的30条优化规则
    浏览器页面加载解析渲染机制(一)
    Cookies 和 Session的区别
    Post Get 区别
    Vue 学习之 关键字、关键单词
    移动H5前端性能优化指南
    『Python基础练习题』day01
  • 原文地址:https://www.cnblogs.com/xiaoshahai/p/14326286.html
Copyright © 2011-2022 走看看