文具网站建设规划书,温州软件开发公司有哪些,做一个网站的费用构成,网页制作的基本步骤和教程文章目录 螺旋矩阵解题思路 螺旋矩阵
给你一个正整数 n #xff0c;生成一个包含 1 到 n2 所有元素#xff0c;且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。
示例 1#xff1a; 输入#xff1a;n 3
输出#xff1a;[[1,2,3],[8,9,4],[7,6,5]]解题思路
模… 文章目录 螺旋矩阵解题思路 螺旋矩阵
给你一个正整数 n 生成一个包含 1 到 n2 所有元素且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。
示例 1 输入n 3
输出[[1,2,3],[8,9,4],[7,6,5]]解题思路
模拟这个螺旋过程。
初始化数组确定循环次数loop n / 2;循环时奇数的中间值需要特殊处理startxstarty用于确定每一次循环的起始点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欢迎关注持续分享。