题目描述:
给你一个正整数 n ,生成一个包含 1 到 n^2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。
示例 1:
输入:n = 3
输出:[[1,2,3],[8,9,4],[7,6,5]]
示例 2:
输入:n = 1
输出:[[1]]
提示:
1 <= n <= 20
按层模拟:最外层 次外层..........最内层
设置左上角坐标和右下角坐标
每层遍历完后左上角坐标加一,右下角坐标减一
class Solution {
public int[][] generateMatrix(int n) {
int[][] nums=new int[n][n];
int top_x=0;
int top_y=0;
int bot_x=n-1;
int bot_y=n-1;
int i=1;
while(top_x<n&&top_y<n&&bot_x<n&&bot_y<n&&top_x>=0&&top_y>=0&&bot_x>=0&&bot_y>=0&&top_x<=bot_x&&top_y<=bot_y)
{
int row=top_x;
int col=top_y;
for(;col<=bot_y;col++)
{
nums[row][col]=i++;
}
col--;
row++;
for(;row<=bot_x;row++)
{
nums[row][col]=i++;
}
row--;
col--;
for(;col>=top_y;col--)
{
nums[row][col]=i++;
}
col++;
row--;
for(;row>top_x;row--)
{
nums[row][col]=i++;
}
top_x++;
top_y++;
bot_x--;
bot_y--;
}
return nums;
}
}