leetcode59:螺旋矩阵II
螺旋矩阵II
给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。
public int[][] generateMatrix(int n) {int startx = 0;int starty = 0;int tmp = 1;int[][] arr = new int[n][n];for (int offset = 1; offset <= n/2; offset++) {//横着赋值for (int i = startx; i < n - offset; i++) {arr[starty][i] = tmp;tmp++;startx++;}//竖着赋值for (int i = starty; i < n - offset; i++) {arr[i][startx] = tmp;tmp++;starty++;}//横着赋值for (int i = startx; i >= offset; i--) {arr[starty][i] = tmp;tmp++;startx--;}//竖着赋值for (int i = starty; i >= offset; i--) {arr[i][startx] = tmp;tmp++;starty--;}startx++;starty++;}if(n%2 == 1){arr[startx][starty] = tmp;}return arr;}
转就完事了
每次转留一个位置给下一次转,保证每次转的数量相同
如果n是奇数,那转到最后会剩下一个中间的格子
直接赋值即可
