zoukankan      html  css  js  c++  java
  • leetcode--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?

    public class Solution {
    	/**The algorithm is simple. but we need to pay attention to the first row and first column.
         * @author Averill Zheng
         * @version 2014-06-15
         * @since JDK 1.7
         */ 
    	public void setZeroes(int[][] matrix) {
    		int row = matrix.length;
    		if(row > 0){
    			int column = matrix[0].length;
    			//find if we need to set first row or first column to be zero
    			boolean setRow = false;
    			boolean setColumn = false;
    			for(int i = 0; i < column; ++i){
    				if(matrix[0][i] == 0){
    					setRow = true; 
    					break;
    				}
    			}
    			for(int i = 0; i < row; ++i){
    				if(matrix[i][0] == 0){
    					setColumn = true;
    					break;
    				}
    			}
    			
    			for(int i = 1; i < row; ++i){
    				for(int j = 1; j < column; ++j){
    					if(matrix[i][j] == 0){
    						matrix[i][0] = 0;
    						matrix[0][j] = 0;
    					}
    				}
    			}
    			
    			//set zeros;
    			for(int j = 1; j < column; ++j){
    				if(matrix[0][j] == 0){
    					for(int i = 1; i < row; ++i)
    						matrix[i][j] = 0;
    				}
    			}
    			
    			for(int i = 1; i < row; ++i){
    				if(matrix[i][0] == 0){
    					for(int j = 1; j < column; ++j)
    						matrix[i][j] = 0;
    				}
    			}
    			if(setRow){
    				for(int i = 0; i < column; ++i)
    					matrix[0][i] = 0;
    			}
    			
    			if(setColumn){
    				for(int i = 0; i < row; ++i)
    					matrix[i][0] = 0;
    			}
    		}
        }
    }
    

      

  • 相关阅读:
    妙味——自定义滚动条
    妙味——拖拽改变大小
    妙味——带框的拖拽
    IE6 固定定位
    JavaScript 事件绑定
    JavaScript 事件
    设置指定网页为主页
    [LeetCode][JavaScript]Compare Version Numbers
    [LeetCode][JavaScript]Implement Stack using Queues
    [LeetCode][JavaScript]Invert Binary Tree
  • 原文地址:https://www.cnblogs.com/averillzheng/p/3790281.html
Copyright © 2011-2022 走看看