博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
73. Set Matrix Zeroes
阅读量:6987 次
发布时间:2019-06-27

本文共 2010 字,大约阅读时间需要 6 分钟。

Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in-place.

Example 1:

Input: [  [1,1,1],  [1,0,1],  [1,1,1]]Output: [  [1,0,1],  [0,0,0],  [1,0,1]]

Example 2:

Input: [  [0,1,2,0],  [3,4,5,2],  [1,3,1,5]]Output: [  [0,0,0,0],  [0,4,5,0],  [0,3,1,0]]

Follow up:

A straight forward solution using O(mn) space is probably a bad idea.A simple improvement uses O(m + n) space, but still not the best solution.Could you devise a constant space solution?

难度:medium

题目:给定m * n的矩阵,如果某一元素为0,则将其所在行及列都设为0。在原矩阵上执行。

一种直接的解法是空间复杂度为O(mn)一种简单的改进是空间复杂度为O(m + n),但是仍不是最好的。是否可以用常量空间给出解法。

思路:先统计首行,首列是否含有0。然后用首行首列来记录其它行列。

Runtime: 1 ms, faster than 99.98% of Java online submissions for Set Matrix Zeroes.

Memory Usage: 45.6 MB, less than 0.96% of Java online submissions for Set Matrix Zeroes.

class Solution {    public void setZeroes(int[][] matrix) {        int m = matrix.length, n = matrix[0].length;        int row0 = 1, column0 = 1;        // first row        for (int i = 0; i < n; i++) {            if (0 == matrix[0][i]) {                row0 = 0;            }        }        // first column        for (int i = 0; i < m; i++) {            if (0 == matrix[i][0]) {                column0 = 0;            }        }        // other rows and columns        for (int i = 1; i < m; i++) {            for (int j = 1; j < n; j++) {                if (0 == matrix[i][j]) {                    matrix[i][0] = 0;                    matrix[0][j] = 0;                }            }        }        // set 0 for other rows and columns        for (int i = 1; i < m; i++) {            for (int j = 1; j < n; j++) {                if (0 == matrix[0][j] || 0 == matrix[i][0]) {                    matrix[i][j] = 0;                }            }        }        // set 0 for first row        for (int i = 0; 0 == row0 && i < n; i++) {            matrix[0][i] = 0;        }        // set 0 for first column        for (int i = 0; 0 == column0 && i < m; i++) {            matrix[i][0] = 0;        }    }}

转载地址:http://asqpl.baihongyu.com/

你可能感兴趣的文章
怎么将图片上传封装成指令?
查看>>
leetcode讲解--861. Score After Flipping Matrix
查看>>
干货 | 金融级互联网产品持续交付的挑战与应对
查看>>
一道面试题引发的思考 --- 理解 new 运算符
查看>>
聊聊JavaScript和Scala的表达式 Expression
查看>>
[原]数据科学教程: 如何使用 mlflow 管理数据科学工作流
查看>>
npm上创建发布package
查看>>
分析 JavaScript 的数据类型与变量
查看>>
解决JS文件引用路径多层查找
查看>>
FE.TEST-前端测试初探
查看>>
超详细Dkhadoop虚拟机安装图文教程
查看>>
排序算法上——冒泡排序、插入排序和选择排序
查看>>
JAVA 8 函数式接口--Supplier
查看>>
Android HTTP
查看>>
Dockerfile多阶段构建原理和使用场景
查看>>
476-数字的补数
查看>>
SQLServer之删除索引
查看>>
七牛云赵之健:多维度融合赋能视频 AI 的实践
查看>>
Android 9 Pie震撼来袭 同步登陆WeTest
查看>>
vue+element Form键盘回车事件页面刷新解决
查看>>