class Solution {
public:
vector<vector<int>> generateMatrix(int n) {
vector<vector<int>>matrix(n, vector<int>(n));
int num = 1;
int left = 0, right = n - 1, top = 0, bottom = n-1;
while(left <= right && top <= bottom){
for(int i = left; i <= right; i++){
matrix[top][i] = num;
num++;
}
for(int i = top + 1; i <= bottom; i++){
matrix[i][right] = num;
num++;
}
if(left < right && top < bottom){
for(int i = right - 1; i > left; i--){
matrix[bottom][i] = num;
num++;
}
for(int i = bottom; i > top; i--){
matrix[i][left] = num;
num++;
}
}
left++;
right--;
top++;
bottom--;
}
return matrix;
}
};
go:
func generateMatrix(n int) [][]int {
top,bottom := 0,n-1//上下
left,right := 0,n-1//左右
num := 1
tar := n*n
maxtrix := make([][]int,n)//返回的是一个长度为n的slice
for i := 0; i < n; i++{
maxtrix[i] = make([]int,n)//go语言的空间机制,没有给一维切片赋值
}
for num <= tar {
for i := left; i<=right; i++{
maxtrix[top][i] = num
num++
}
top++
for i := top; i <= bottom; i++{
maxtrix[i][right] = num
num++
}
right--
for i := right; i >= left; i--{
maxtrix[bottom][i] = num
num++
}
bottom--
for i := bottom; i >= top; i--{
maxtrix[i][left] = num
num++
}
left++
}
return maxtrix
}