- LeetCode59螺旋矩阵II题目链接
- 给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。
- 示例 1:
输入:n = 3
输出:[[1,2,3],[8,9,4],[7,6,5]] - 示例 2:
输入:n = 1
输出:[[1]] - 看了卡哥视频及文章后,这个题目还是坚持循环不变量原则,可以每画一条边都坚持一致的左闭右开,然后根据螺旋顺序分别处理,代码如下(java):
点击查看代码
public class Solution {
public int[][] generateMatrix(int n) {
int[][] result=new int[n][n];
int startX=0;
int startY=0;
int i,j;
int offset=1;
int circle=n/2;
int num=1;
while (circle>0){
for(j=startY;j<n-offset;j++){
result[startX][j]=num++;
}
for(i=startX;i<n-offset;i++){
result[i][j]=num++;
}
for(;j>startY;j--){
result[i][j]=num++;
}
for (;i>startX;i--){
result[i][j]=num++;
}
startX++;
startY++;
offset++;
circle--;
}
if(n%2==1){
result[n/2][n/2]=num;
}
return result;
}
}
- 看懂之后实现就比较简单了,主要是需要理解思想,保持循环不变量原则,把问题进行分解一步步解决