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

Javascript每天一道算法题(十八)——矩阵置零-中等

文章目录

  • 1、问题
  • 2、示例
  • 3、解决方法
    • (1)方法1——标记数组


1、问题

给定一个 y x x 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。

2、示例

示例 1:
输入:matrix = [[1,1,1],[1,0,1],[1,1,1]]
输出:[[1,0,1],[0,0,0],[1,0,1]]
111 101
101 => 000
111 101
在这里插入图片描述

示例 2:
输入:matrix = [[0,1,2,0],[3,4,5,2],[1,3,1,5]]
输出:[[0,0,0,0],[0,4,5,0],[0,3,1,0]]
0120 0000
3452 => 0450
1215 0310
在这里插入图片描述

3、解决方法

(1)方法1——标记数组

思路:
1:用两个标记数组分别记录每一行和每一列是否有零出现。
2:遍历该数组一次,如果某个元素为 0,那么就将该元素所在的行和列所对应标记数组的位置置为 true
3:最后我们再次遍历该数组,用标记数组更新原数组即可。

let matrix = [[0,1,2,0],[3,4,5,2],[1,3,1,5]]
var setZeroes = function(matrix) {// 1:获取x,y轴的长度let y = matrix.length; // 1-1:二维数组的长度(矩阵y轴的长度)let x = matrix[0].length; // 1-2:一维数组的长度(矩阵x轴的长度)// 2:获取行和列的长度(注意:行的长度由列决定)let row = new Array(y).fill(false); // 2-1: 行(行的长度是列的多少决定的,如示例二有四列,行为4)let col = new Array(x).fill(false); // 2-2: 列(列的长度是行的多少决定的,如示例二有三行,列为3)// 3:双层遍历该数组,如果其中有一个元素为0,将当前的行和列改为truefor(let i =0;i<y;i++){for(let j =0;j<x;j++){if(matrix[i][j] == 0){row[i] = col[j] = true}}}// 4:再次双层循环该数组,将之前标记为true的数据设置为0for(let i =0;i<y;i++){for(let j =0;j<x;j++){if(row[i] || col[j]){matrix[i][j] = 0}}}// 5:输出结果console.log('zz', matrix);
};
http://www.lryc.cn/news/242965.html

相关文章:

  • 基于ROS开发的开源项目
  • kafka精准一次、事务、幂等性
  • centos 7.9 下利用miniconda里的pyinstaller打包python程序为二进制文件操作方法
  • Motion Plan之基于采样的路径规划算法笔记
  • idea里面常用插件
  • 回归算法优化过程推导
  • 某高品质房产企业:借助NineData平台,统一数据库访问权限,保障业务安全
  • Arduio开发STM32所面临的风险
  • 精准人脉引流软件的开发流程与涉及到的技术
  • Mysql数据库 20.DCL数据控制语言
  • 使用CMake交叉编译Arm Linux程序
  • 训练日志——logging
  • 尺度为什么是sigma?
  • 迭代器模式
  • C++ 修饰符、存储类、运算符、循环、判断
  • 2023 hnust 湖南科技大学 信息安全管理课程 期中考试 复习资料
  • N皇后问题解的个数
  • php订单发起退款(余额和微信支付)
  • 【SpringCloud】认识微服务、服务拆分以及远程调用
  • Mysql基础操作(命令行)
  • 网站遇到DDOS攻击怎么办?
  • 中间件渗透测试-Server2131(解析+环境)
  • 探究Kafka原理-2.Kafka基本命令实操
  • Linux网卡没有eth0显示ens33原因以及解决办法
  • 1.前端--基本概念【2023.11.25】
  • 计算机视觉面试题-01
  • 108. 将有序数组转换为二叉搜索树 --力扣 --JAVA
  • Springboot实现增删改差
  • 【程序员的自我修养01】编译流程概述
  • 在PyCharm中正确设置Python项目