zoukankan      html  css  js  c++  java
  • [leetcode]Set Matrix Zeroes

    就是先遍历二维数组,然后用首行和首列作为标记是否整行整列要设为0。对于首行首列本身,另用两个boolean记录。

    public class Solution {
        public void setZeroes(int[][] matrix) {
            // Start typing your Java solution below
            // DO NOT write main() function
            
            int m = matrix.length;
        	if (m == 0) return;
        	int n = matrix[0].length;
        	if (n == 0) return;
        	
        	boolean m0 = false;
        	boolean n0 = false;
        	for (int i = 0; i < m; i++) {
        		for (int j = 0; j < n; j++) {
        			if (matrix[i][j] == 0) {
        				matrix[i][0] = 0;
        				matrix[0][j] = 0;
        				if (i == 0) m0 = true;
        				if (j == 0) n0 = true;
        			}
        		}
        	}
        	
        	for (int i = 1; i < m; i++) {
        		for (int j = 1; j < n; j++) {
        			if (matrix[i][0] == 0 || matrix[0][j] == 0) {
        				matrix[i][j] = 0;
        			}
        		}
        	}
        	
        	if (m0) for (int i = 0; i < n; i++){
        		matrix[0][i] = 0;
        	}
        	if (n0) for (int i = 0; i < m; i++) {
        		matrix[i][0] = 0;
        	}
        }
    }
    

    参考答案中最后并不是遍历整个数组,而是遍历首行首列然后设0,但整体上复杂度不变。

  • 相关阅读:
    163国内镜像源
    一个简单的springboot项目
    springcloud概述
    final关键字
    springboot项目多模块打包
    Unity Shaderlab: Object Outlines
    生命周期
    Unity内置事件
    Win10输入指示器关掉后自动恢复的问题
    Unity Shader-后处理:景深
  • 原文地址:https://www.cnblogs.com/lautsie/p/3242203.html
Copyright © 2011-2022 走看看