leetcode 73. Set Matrix Zeroes-矩阵置零|数组

来源:互联网 发布:php冒泡排序法 编辑:程序博客网 时间:2024/06/05 15:20
原题链接:73. Set Matrix Zeroes【思路-Java】T=O(n)|M=O(n)建立一个大小为 n 的数组,用于记录第 j 列是否出现0
public class Solution {    public void setZeroes(int[][] matrix) {        boolean[] flag = new boolean[matrix[0].length];        for(int i =0; i<matrix.length; i++) {            boolean contains0 = false;            for (int j =0; j < matrix[0].length; j++) {                if(matrix[i][j] == 0) {                    contains0 = true;                    flag[j] = true;                }            }            if(contains0)                for(int j=0; j<matrix[0].length; j++) matrix[i][j] = 0;        }        for(int j = 0; j < matrix[0].length; j++)            if(flag[j])                for(int i =0; i<matrix.length; i++) matrix[i][j] = 0;    }}
157 / 157 test cases passed. Runtime: 2 ms  Your runtime beats 23.02% of javasubmissions.
【思路2-Python】T=O(n)|M=O(1)题目建议最好使用常数空间,那么我们先扫描第一行,记录下第一行是否含有0。接着从第二行开始扫描,当扫描到0时,就将“该列出现0”的信息记录到第一行中,而不是新生成一个大小为 n 的boolean数组 :
class Solution(object):    def setZeroes(self, matrix):        """        :type matrix: List[List[int]]        :rtype: void Do not return anything, modify matrix in-place instead.        """        firstRowContains0 = False        for row in matrix[0] :            if row == 0 :                 firstRowContains0 = True                break        for i in range(1,len(matrix)) :            thisRowContains0 = False            for j in range(0, len(matrix[0])) :                if matrix[i][j] == 0 :                    thisRowContains0 = True                    matrix[0][j] = 0            if thisRowContains0 :                for j in range(0, len(matrix[0])) :                    matrix[i][j] = 0        for j in range(len(matrix[0])) :            if matrix[0][j] == 0 :                for i in range(len(matrix)) :                    matrix[i][j] = 0        if firstRowContains0 :            for j in range(len(matrix[0])) :                matrix[0][j] = 0
157 / 157 test cases passed. Runtime: 176 ms  Your runtime beats 84.33% of pythonsubmissions.

1 0
原创粉丝点击