zoukankan      html  css  js  c++  java
  • 【数组】Set Matrix Zeroes

    题目:

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

    click to show follow up.

    Follow up:

    Did you use extra space?
    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?

    思路:

    O(mn)解法:用m*n的空间记录每个某个位置是否要设置成0。

    O(m+n)解法:用一个数组记录某一列是否需要设置成0,用一个数组记录某一行是否需要设置成0。

    常数空间解法:如果我们可以用matrix本身的空间来记录,就不需要额外的空间了。用matrix第一行记录相应的列是都需要置0,第一列来记录相应的行是否需要置0。用来记录之前需要提前判断第一行和第一列是否需要置0。然后遍历matrix(出了第一行和第一列)如果matrix[i][j]等于0,那么matrixp[i][0] = 0 (行标志),matrix[0][j] = 0(列标志)。再次遍历matrix只要对应位置的行标志或者列标志等于0,相应的位置就置0,。最后还要看第一行和第一列是否需要置0。

    /**
     * @param {number[][]} matrix
     * @return {void} Do not return anything, modify matrix in-place instead.
     */
    var setZeroes = function(matrix) {
        var m=matrix.length,n=matrix[0].length;
        var firstC=1,firstR=1;
        for(var i=0;i<m;i++){
            if(matrix[i][0]==0){
                firstC=0;
            }
        }
        for(var i=0;i<n;i++){
            if(matrix[0][i]==0){
                firstR=0;
            }
        }
        
        for(var i=1;i<m;i++){
            for(j=1;j<n;j++){
                if(matrix[i][j]==0){
                    matrix[i][0]=0;
                    matrix[0][j]=0;
                }
            }
        }
        for(var i=1;i<m;i++){
            for(j=1;j<n;j++){
                if(matrix[i][0]==0||matrix[0][j]==0){
                    matrix[i][j]=0;
                }
            }
        }
        
        if(firstC==0){
            for(var i=0;i<m;i++){
                matrix[i][0]=0;
            }
        }
        if(firstR==0){
            for(var i=0;i<n;i++){
                matrix[0][i]=0;
            }
        }
        
    };
  • 相关阅读:
    一个网络扫描程序
    ASCII
    一个linux下c++程序
    VC数字图像处理编程
    人际关系的55个绝招
    一些函数
    【转】Vim命令合集以及乱码问题解决
    【转】PHP程序员的技术成长规划
    【转】Nginx 服务器安装及配置文件详解
    【转】PHP网站常见安全漏洞,及相应防范措施总结
  • 原文地址:https://www.cnblogs.com/shytong/p/5109218.html
Copyright © 2011-2022 走看看