备案期间网站能访问吗,推广方式是什么意思,网页设计作品评价,搜索引擎优化定义问题背景
给你一个正整数 n n n#xff0c;生成一个包含 1 1 1 到 n 2 n ^ 2 n2 所有元素#xff0c;且元素按顺时针顺序螺旋排列的 n n n \times n nn 正方形矩阵 m a t r i x matrix matrix。
数据约束 1 n 20 1 \times n \times 20 1n20
解题过程
定义方向数组…问题背景
给你一个正整数 n n n生成一个包含 1 1 1 到 n 2 n ^ 2 n2 所有元素且元素按顺时针顺序螺旋排列的 n × n n \times n n×n 正方形矩阵 m a t r i x matrix matrix。
数据约束 1 × n × 20 1 \times n \times 20 1×n×20
解题过程
定义方向数组每次遇到越界的情况或是已经填过数字的位置就变换方向。
具体实现
class Solution {private static final int[][] DIRECTIONS new int[][] {{0, 1}, {1, 0}, {0, -1}, {-1, 0}};public int[][] generateMatrix(int n) {int[][] res new int[n][n];int i 0;int j 0;int direction 0;// 按要填的数进行循环for (int cur 1; cur n * n; cur) {res[i][j] cur;// 根据方向数组计算下一个该填数的位置int x i DIRECTIONS[direction][0];int y j DIRECTIONS[direction][1];// 遇到越界的情况或者下个位置已经填过数就要变换方向if (x 0 || x n || y 0 || y n || res[x][y] ! 0) {direction (direction 1) % 4;}// 迭代新位置i DIRECTIONS[direction][0];j DIRECTIONS[direction][1];}return res;}
}