微信公众号网站导航怎么做,网站推广团队,怎么弄一个网站平台,网站普查建设背景目录 题目描述示例 1#xff1a;代码实现 题目描述
给你一个正整数 n #xff0c;生成一个包含 1 到 n2 所有元素#xff0c;且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。
示例 1#xff1a; 输入#xff1a;n 3 输出#xff1a;[[1,2,3],[8,9,4],[7,6,5… 目录 题目描述示例 1代码实现 题目描述
给你一个正整数 n 生成一个包含 1 到 n2 所有元素且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。
示例 1 输入n 3 输出[[1,2,3],[8,9,4],[7,6,5]]
代码实现
class Solution {public int[][] generateMatrix(int n) {int[][] ans new int[n][n];// 定义二维螺旋数组// 循环一层的初始横坐标初始纵坐标int startX 0;int startY 0;int offset 1;// 边界偏移量控制遍历顺序从外向内int cnt 1;// 遍历当前位置的元素数值int i 0, j 0;// 遍历过程中的临时变量i表示行j表示列// 遍历矩阵的层数为矩阵长度的一半分边长长度为奇偶两种情况for (int k 0; k n / 2; k) {// 每一条边界遵循左闭右开的遍历顺序// 遍历上边界for (j startX; j n - offset; j) {ans[startX][j] cnt;}// 遍历右边界for (i startX; i n - offset; i) {ans[i][j] cnt;}// 遍历下边界for (; j startY; j--) {ans[i][j] cnt;}// 遍历左边界for (; i startX; i--) {ans[i][j] cnt;}// 边界向内缩小一周startX;// 起始位置横坐标加一startY;// 起始位置纵坐标加一offset;// 边界偏移量加一}// 如果矩阵边长为奇数的情况需要手动填充中心数if (n % 2 ! 0) {ans[startX][startY] cnt;}return ans;}
}