代码随想录刷题day02

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
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值