01.螺旋矩阵
思路:每条边都是左闭右开。每完成一条边的填充,就会使下一条边需要填充的数量减一
function generateMatrix(n: number): number[][] {
const ans:number[][] = Array(n).fill(0).map(()=>Array(n).fill(0))
let count = 1;
const end = n ** 2
let top:number = 0, right:number = 0, bottom:number = n - 1, left:number = n - 1;
while (count <= end) {
for (let i = top; i <= bottom; i++) {
ans[right][i] = count++
}
right++
for (let i = right; i <= left; i++) {
ans[i][bottom] = count++
}
bottom--
for (let i = bottom; i >= top; i--) {
ans[left][i] = count++
}
left--
for (let i = left; i >= right; i--) {
ans[i][top] = count++
}
top++
}
return ans
};