力扣59 螺旋矩阵II java实现
59.螺旋矩阵II
给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。
示例 1:

输入:n = 3 输出:[[1,2,3],[8,9,4],[7,6,5]]
示例 2:
输入:n = 1 输出:[[1]]
提示:
1 <= n <= 20
初始化一个 n×n 大小的矩阵 mat,然后模拟整个向内环绕的填入过程:
定义当前左右上下边界 l,r,t,b,初始值 num = 1,迭代终止值 tar = n * n;
当 num <= tar 时,始终按照 从左到右 从上到下 从右到左 从下到上 填入顺序循环,每次填入后:更新边界最终返回 mat 即可。
public static void main(String[] args) { // 测试用int[][] res = generateMatrix(3);for (int[] ints : res) {System.out.println(Arrays.toString(ints));}}public static int[][] generateMatrix(int n) {int tar = n * n;int[][] res = new int[n][n];int cur = 1;int x = 0;int y = 0;int up = 0, down = n - 1, left = 0, right = n - 1; // 设置上下左右边界while (cur <= tar){ // 依次模拟螺旋,并更新边界if (cur > tar) break;for (int i = y; i <= right; i++) {res[x][i] = cur;cur++;y = i;}up++;x = up;if (cur > tar) break;for (int i = x; i <= down; i++) {res[i][y] = cur;cur++;x = i;}right--;y = right;if (cur > tar) break;for (int i = y; i >= left; i--) {res[x][i] = cur;cur++;y = i;}down--;x = down;if (cur > tar) break;for (int i = x; i >= up; i--) {res[i][y] = cur;cur++;x = i;}left++;y = left;}return res;}
以上为记录分享用,代码较差请见谅
