LeetCode--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解题思路这道题目可以说在面试中出现频率较高的题目本题并不涉及到什么算法就是模拟过程但却十分考察对代码的掌控能力。要如何画出这个螺旋排列的正方形矩阵呢求解本题依然是要坚持循环不变量原则。模拟顺时针画矩阵的过程:填充上行从左到右填充右列从上到下填充下行从右到左填充左列从下到上由外向内一圈一圈这么画下去。这里一圈下来我们要画每四条边这四条边怎么画每画一条边都要坚持一致的左闭右开或者左开右闭的原则这样这一圈才能按照统一的规则画下来。代码classSolution{publicint[][]generateMatrix(intn){// 起始横坐标intstartX0;// 起始纵坐标intstartY0;// 初始要填的边长intinitEdgen-1;// 计算中心点intmidn/2;// 从数字1开始填intcount1;// 循环圈数n/2intloopCntn/2;// 初始化结果矩阵int[][]resultnewint[n][n];while(loopCnt--0){intistartX;intjstartY;// 从左到右上行for(;jinitEdgestartY;j){result[i][j]count;}// 从上到下右列for(;iinitEdgestartX;i){result[i][j]count;}// 从右到左下行for(;jstartY;j--){result[i][j]count;}// 从下到上左列for(;istartX;i--){result[i][j]count;}// 每循环一圈要填的边长-2initEdge-2;startX;startY;}if(n%21){result[mid][mid]count;}returnresult;}}