当前位置: 首页 > web >正文

力扣算法ing(69 / 100)

``

5.12 数组合集—59.螺旋矩阵

给你一个正整数 n ,生成一个包含 1n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix

示例 1:

输入:n = 3
输出:[[1,2,3],[8,9,4],[7,6,5]]

示例 2:

输入:n = 1
输出:[[1]]

提示:

  • 1 <= n <= 20

这道题目可以说在面试中出现频率较高的题目,本题并不涉及到什么算法,就是模拟过程,但却十分考察对代码的掌控能力。

我的思路:其实我最开始是没有思路的,除了一昧的循环,我没有任何思路,看到题解使用的边界方法,我突然领悟了

生成一个包含 1 到 n2 所有元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix
生成一个正方形的矩阵,它的值是元素按顺时针螺旋排列得到的
i j 
00 01  02
10 11  12
20 21  22
定义边界
r=2 l=0 t=0 b=2
for(int i = 0 ; i < r ; i++){[top][i]top++
}
for(let j = top ; j < b ; j++){[j][r]r--;
}
for(let k = r ; k > l ; k-- ){[b][k]b--;
}
for(let m = b ; m > t ; m==){[m][l];l++
}

但是实现起来却没有这么简单:

  • 矩阵声明问题:

    我最开始是用的

  • let res : number[][] = [];
    

    但是这样的声明不会创建一个n x n的二维数组,而是创建了一个空数组

  • let res = new Array(n).fill(0).map(() => new Array(n).fill(0));
    

最终代码:

function generateMatrix(n: number): number[][] {// 定义边界let r = n - 1 , l = 0 , t = 0 , b = n - 1;const total = n * n ; let num = 1 ; // 这样的声明不会创建一个n x n的二维数组,而是创建了一个空数组。let res = new Array(n).fill(0).map(() => new Array(n).fill(0));while(num <= total){for(let i = l ; i <= r ; i++){res[t][i] = num;num++;}t++;for(let j = t ; j <= b ; j++){res[j][r] = num;num++;}r--;for(let k = r ; k >= l ; k--){res[b][k] = num;num++;}b--;for(let m = b ; m >= t ; m--){res[m][l] = num;num++;}l++;}return res;};

总结:这样的螺旋问题可以使用边界法,边界是动态的,我们循环的时候注意一下边界就好啦

http://www.xdnf.cn/news/5699.html

相关文章:

  • MongoDB使用x.509证书认证
  • 单片机Day10
  • 【Mysql基础】二、函数和约束
  • 职坐标IT培训:互联网行业核心技能精讲
  • Model.eval() 与 torch.no_grad() PyTorch 中的区别与应用
  • Scala和Spark的介绍
  • window server 2012安装sql server2008 r2
  • 每日c/c++题 备战蓝桥杯(洛谷P1387 最大正方形)
  • 工业协议跨界实录:零基础玩转PROFINET转EtherCAT主站智能网关
  • 网张实验操作-防火墙+NAT
  • 软考教材重点内容 信息安全工程师 第24章 工控安全需求分析与安全保护工程
  • 如何禁止chrome自动更新
  • 2025年Energy SCI1区TOP,改进雪消融优化算法ISAO+电池健康状态估计,深度解析+性能实测
  • 小白入手搭建本地部署的Dify平台(基于Windows)
  • C++ 跨平台开发挑战与深度解决方案:从架构设计到实战优化
  • 韩国直邮新纪元:Coupang多语言支持覆盖38国市场
  • Spring Data Elasticsearch 中 ElasticsearchOperations 构建查询条件的详解
  • 【Python 基础语法】
  • 直方图特征结合 ** 支持向量机图片分类
  • AD 固定孔及器件的精准定义
  • CVE-2024-26809利用nftables双重释放漏洞获取Root权限
  • 高速边坡监测成本高?自动化如何用精准数据省预算?
  • Oracle集群多副本控制文件异常问题
  • 产品思维30讲-(梁宁)--实战2
  • 分水岭算法:从逻辑学角度看图像分割的智慧
  • Ubuntu20.04 搭建Kubernetes 1.28版本集群
  • C++ 编译报错 undefined reference 找不到引用的问题解决思路
  • vue+element下拉选择器默认选择第一个并根据选择项展示相关数据
  • 瑞派宠物医生:借腔镜影像妙技,筑牢宠物生命防线
  • 4.MySQL全量、增量备份与恢复