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

三天精通一种算法之螺旋矩阵(设计思路),长度最小子数组(滑动窗口)

这题主要考察思维

我来一一解释这串代码

var generateMatrix = function(n) {
    const matrix = Array.from({ length: n }, () => Array(n).fill(0));
    let top = 0, bottom = n - 1;
    let left = 0, right = n - 1;
    var num = 1;
    
    while (num <= n * n) {
        // 填充上行
        for (let i = left; i <= right; i++) {
            matrix[top][i] = num++;
        }
        top++;
        
        // 填充右列
        for (let i = top; i <= bottom; i++) {
            matrix[i][right] = num++;
        }
        right--;
        
        // 填充下行
        if (top <= bottom) {
            for (let i = right; i >= left; i--) {
                matrix[bottom][i] = num++;
            }
            bottom--;
        }
        
        // 填充左列
        if (left <= right) {
            for (let i = bottom; i >= top; i--) {
                matrix[i][left] = num++;
            }
            left++;
        }
    }
    
    return matrix;
};

其实解题过程出现很多小细节的错误

1.填充方式的理解错误导致在for循环的条件没有添加等号

2.判断最后需不需要填充的if条件没有加等号,事实上填充到最后一个方块这四个指标都会相等,所以还是要添加循环

很多人一开始就想到了暴力 两个for拍屁股走人,恭喜你力扣更新后暴力无法通过了,我们来看看这个新颖的双指针算法---滑动窗口,注意滑动窗口只解决了(连续子数组)的最短和

第一次解答错误

没理解到第一个while(end),还是要多多加强

第二次错在第一个while里面嵌套的是sum+=num[end],贼贼贼


http://www.kler.cn/a/402309.html

相关文章:

  • React状态管理详解
  • Ubuntu22.04安装CH343驱动并创建udev规则
  • Vue 专属状态管理库Pinia的使用与实践
  • 解决前后端发版本时候,手动清除浏览器缓存
  • RN开发搬砖经验之—React Native(RN)应用转原生化-Android 平台
  • vite -- 开发环境 热更新
  • iOS 18 导航栏插入动画会导致背景短暂变白的解决
  • Unity中的预制体Prefab
  • Linux设置开机自动执行脚本 rc-local
  • 亚马逊商品详情API接口解析,Json数据示例返回
  • 速盾:CDN是否支持屏蔽IP?
  • Python入门(10)--面向对象进阶
  • 【linux】(13)java虚拟机进程信息-jps
  • Excel——宏教程(1)
  • 代码随想录算法训练营第三十五天| 01背包问题 二维 、01背包问题 一维、416. 分割等和子集 。c++转java
  • C++创建型设计模式体现出的面向对象设计原则
  • unity3d————非实例化对象
  • 2024年中国AI大模型场景探索及产业应用调研报告:大模型“引爆”行业新一轮变革
  • Docker入门之Windows安装Docker初体验
  • Cargo Rust 的包管理器