题目:
给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。
示例:
输入: 3
输出:
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]
- 这一题和LeetCode 54. 螺旋矩阵思路很像,我就是逆着这个思路来做的,具体的可以看我之前的题解LeetCode 54. 螺旋矩阵
题解:
/**
* @Author dfpeng
* @Date 2019/7/30
*/
public class Solution {
public static int[][] generateMatrix(int n) {
int[][] res=new int[n][n];
if (n<=0){
return res;
}
int up=0;
int down=n-1;
int left=0;
int right=n-1;
int count=1;
while (true){
for (int i = left; i <=right ; i++) {
res[up][i]=count++;
}
if (++up>down){
break;
}
for (int i = up; i <=down ; i++) {
res[i][right]=count++;
}
if (--right<left){
break;
}
for (int i = right; i >=left ; i--) {
res[down][i]=count++;
}
if (--down<up){
break;
}
for (int i = down; i >=up ; i--) {
res[i][left]=count++;
}
if (++left>right){
break;
}
}
return res;
}
}