用dede做网站去掉版权做seo的网站
文章目录
- 螺旋矩阵
 - 解题思路
 
螺旋矩阵
给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。
示例 1:

输入:n = 3
输出:[[1,2,3],[8,9,4],[7,6,5]]
 
解题思路
模拟这个螺旋过程。
- 初始化数组
 - 确定循环次数,loop = n / 2;
 - 循环时,奇数的中间值需要特殊处理
 - startx,starty,用于确定每一次循环的起始点
 - offset,用于减少每一次循环的此处
 - mid,用于处理中间值
 
终点:**循环不变量,**每一次循环遵循左闭右开的原则。
分为
- 最上方从左往右
 - 最右方从上往下
 - 最下方从右往左
 - 最左方从下往上
 
详细代码如下:
class Solution {public int[][] generateMatrix(int n) {//保证循环不变量的操作int startx = 0 ,starty = 0;int result[][] = new int[n][n]; //初始化数组int loop = n / 2; //循环次数,奇数时,中间值需要特殊处理。int mid = n / 2; //中间值int i,j; //用于循环int offset = 1; //用于减少每一次的循环次数int count = 1; //用于赋值while(loop-- > 0){  //循环次数//最上方从左往右for(j = starty; j < n - offset; j++){result[startx][j] = count++;}//最右方从上往下for(i = startx;i < n- offset;i++){result[i][j] = count++;}//最下方从右往左for(;j > starty;j--){result[i][j] = count++;}//最左方从下往上for(;i > startx;i--){result[i][j] = count++;}startx++;   //设置下一次的起始点starty++;   //设置下一次的起始点offset++;   //设置下一次的循环次数}//如果为奇数,中间值,特殊处理if(n % 2 == 1){result[mid][mid] = count; }return result;}
}
 
我是小辉,24 届毕业生。当下是找工作ing,欢迎关注,持续分享。
