今日学习的文章链接和视频链接:
https://www.bilibili.com/video/BV1SL4y1N7mV/
自己看到题目的第一想法:
第一想法是,先定义矩阵的上下左右四个边界,然后按照从左到右,从上到下,从右到左,从下到上的顺序,依次填充数字。每填完一圈,就把对应的边界往里缩一圈,直到所有数字都填完。
自己实现过程中遇到哪些困难:
1.我一开始没有严格按照 “填完一条边再收缩对应边界” 的顺序来写,比如刚填完上边界就先把左边界收缩了,导致后续的循环范围错误,中间部分的数字填充出现了重叠和遗漏。
2.一开始忘记在每个循环里加上num <= n*n的判断,在处理奇数阶矩阵时,循环会多执行一次,导致边界越界访问,程序直接报错
今日收获心得:
1.这道题让我真正理解了 “区间定义” 在算法题里的重要性。就像视频里提到的,二分搜索里用到的左闭右开或左闭右闭的区间思想,在这里同样适用。只要统一了边界的开闭规则,循环的终止条件和边界收缩就不会乱。
2.这种模拟转圈的问题,其实逻辑并不复杂,但非常考验细节。写代码前一定要先在纸上把流程走一遍,明确每一步的边界变化和循环范围,不要上来就直接敲代码,否则很容易在边界控制上反复踩坑。