73. 矩阵置零---js解法

该博客介绍了LeetCode第73题的解决方案,即如何在JavaScript中实现矩阵置零的原地算法。当矩阵中的某个元素为0时,需要将该元素所在的行和列的所有元素都置为0。博客内容包括题目描述和解题思路。
摘要由CSDN通过智能技术生成

题目描述:

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

力扣链接:
https://leetcode-cn.com/problems/set-matrix-zeroes/
在这里插入图片描述
在这里插入图片描述


解题思路:

    1.检查并标记第一行和第一列是否有0
    2.使用第一行和第一列,来标记其余行列是否含有0
    3.接下来,利用第一行和第一列的标0情况,将matrix中的数字标0
    4.最后,处理第一行和第一列
      如果firstColHasZero等于true,将第一列全设为00
      如果firstRowHasZero等于true,将第一列全设为00

/**
 * @param {number[][]} matrix
 * @return {void} Do not return anything, modify matrix in-place instead.
 */
   var setZeroes = function(matrix) {
   
        
        let firstColHasZero = false;
        let firstRowHasZero = false;
          
        //检查第一列是否有0
        for(let i = 0; i < matrix.length; i++) {
   
            if(matrix[i
以下是基于51单片机的矩阵键盘输入2761后数码管循环显示2761然后276.1然后27.61然后2.761然后7612-761.2-76.123-7.612-7127-612.7-61.27-6.127-1276-127.6-12.76-1.276-2761-. 的代码: ``` #include <reg52.h> #define uchar unsigned char #define uint unsigned int uchar code table[] = {0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90, 0xbf}; //数码管显示0-9和.的编码 sbit L1 = P2^0; //矩阵键盘第一行 sbit L2 = P2^1; //矩阵键盘第二行 sbit L3 = P2^2; //矩阵键盘第三行 sbit L4 = P2^3; //矩阵键盘第四行 sbit C1 = P2^4; //矩阵键盘第一列 sbit C2 = P2^5; //矩阵键盘第二列 sbit C3 = P2^6; //矩阵键盘第三列 uchar keyscan() //矩阵键盘扫描函数 { uchar val = 0xff; //初始化键值 L1 = 0; //第一行低电平 if (C1 == 0) {val = 1;} //第一列检测按键 if (C2 == 0) {val = 2;} //第二列检测按键 if (C3 == 0) {val = 3;} //第三列检测按键 L1 = 1; //第一行恢复高电平 L2 = 0; //第二行低电平 if (C1 == 0) {val = 4;} //第一列检测按键 if (C2 == 0) {val = 5;} //第二列检测按键 if (C3 == 0) {val = 6;} //第三列检测按键 L2 = 1; //第二行恢复高电平 L3 = 0; //第三行低电平 if (C1 == 0) {val = 7;} //第一列检测按键 if (C2 == 0) {val = 8;} //第二列检测按键 if (C3 == 0) {val = 9;} //第三列检测按键 L3 = 1; //第三行恢复高电平 L4 = 0; //第四行低电平 if (C1 == 0) {val = 0;} //第一列检测按键 if (C2 == 0) {val = 10;} //第二列检测按键 if (C3 == 0) {val = 0xff;} //第三列检测按键(不启用) L4 = 1; //第四行恢复高电平 return val; //返回键值 } void display(uchar num) //数码管显示函数 { static uchar pos = 0; //静态变量,记录数码管显示的位 static uchar data[] = {0, 0, 0, 0}; //静态数组,保存数码管显示的数据 uchar i = 0; //循环计数器 if (num == 10) //按下小数点键 { pos = 1; //从第二位开始显示 data[0] = 0; //第一位清 } else //按下数字键 { if (pos == 0) //整数部分 { data[3] = data[2]; data[2] = data[1]; data[1] = data[0]; data[0] = num; } else //小数部分 { data[pos-1] = num; } pos++; //位向后移动一位 if (pos > 4) {pos = 1;} //位超出范围,回到第一位 } //数码管循环显示数据 for (i=0; i<4; i++) { P0 = table[data[i]]; //数码管显示对应的数字或小数点 delay(5); //延时一段时间,避免闪烁 P0 = 0xff; //关闭数码管 delay(5); //延时一段时间,避免闪烁 } } void main() { while (1) //循环执行 { uchar val = keyscan(); //扫描矩阵键盘 if (val != 0xff) //判断是否有按键按下 { display(val); //数码管显示对应的数字或小数点 } } } ``` 注意:以上代码仅供参考,具体实现可能需要根据具体情况进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值