1. 程式人生 > >java實現 Set matrix zeros

java實現 Set matrix zeros

Set matrix zeros

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

如果矩陣中某一元素為零,則將其所在列與行置為零

package ustc.zyy.LeetCode;

/**
 * admin zhang yin ye
 * email:[email protected]
 * 1.先確定第一行和第一列是否需要清零 
 * 2.掃描剩下的矩陣元素,如果遇到了0,就將對應的第一行和第一列上的元素賦值為0
 * 3.根據第一行和第一列的資訊,已經可以講剩下的矩陣元素賦值為結果所需的值了 
 * 4.根據1中確定的狀態,處理第一行和第一列。
 * */

public class SetMatrixZero {
	public void setZero(int[][] matrix) {
		boolean firstRowZero = false;
		boolean firstColumnZero = false;
		// 判斷第一列是不是有零 有的話 就標記 firstColumnZero
		for (int i = 0; i < matrix.length; i++) {
			if (matrix[i][0] == 0) {
				firstColumnZero = true;
				break;
			}
		}
		// 判斷第一列是不是有零 要是有的話 就標記firstRowZero
		for (int j = 0; j < matrix[0].length; j++) {
			if (matrix[0][j] == 0) {
				firstRowZero = true;
				break;
			}
		}
		// 掃描剩下的矩陣 要是遇到了0 就把對應的第一行或者第一列設定為o即可
		for (int i = 1; i < matrix.length; i++) {
			for (int j = 1; j < matrix[0].length; j++) {
				if (matrix[i][j] == 0) {
					matrix[i][0] = 0;
					matrix[0][j] = 0;
				}
			}
		}
		// 根據第一行和第一列的資訊 來判斷這一行或者這一列是不是可以設定為0了
		//
		for (int i = 1; i < matrix.length; i++) {
			for (int j = 1; j < matrix[0].length; j++) {
				if (matrix[i][0] == 0 || matrix[0][j] == 0) {
					matrix[i][j] = 0;
				}
			}
		}
		// 檢查第一列的資訊
		if (firstColumnZero) {
			for (int i = 0; i < matrix.length; i++) {
				matrix[i][0] = 0;
			}
		}
		// 檢查第一行資訊
		if (firstRowZero) {
			for (int j = 0; j < matrix[0].length; j++) {
				matrix[0][j] = 0;
			}
		}
	}

}

相關推薦

java實現 Set matrix zeros

Set matrix zeros Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in place. 如果矩陣中某一元素為零,則將其所在列與行置為零 pa

[LintCode] Set Matrix Zeros

b- ems gin cor counter best which bool rect Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in plac

LeetCode-73-Set Matrix Zeros

給定一個 m x n 的矩陣,如果一個元素為 0,則將其所在行和列的所有元素都設為 0。請使用原地演算法。 示例 1: 輸入:  [   [1,1,1],   [1,0,1],   [1,1,1] ] 輸出:  [   [1,0,1],   [0,0,0],   [1,0

73. Set Matrix Zeros

題目: 解答: 提供了兩種解題思路: 第一種,使用兩個陣列,分別標記每一行、每一列是否有0的存在,然後再去更新二維陣列。 第二種,使用兩個變數brow,bcol分別標記第0行,第0列是否存在0,然後使用每一行、每一列的第一個單元儲存是否該行、該列存在0. 程式

【LeetCode-面試算法經典-Java實現】【054-Spiral Matrix(螺旋矩陣)】

[] -a order detail tty util lis title comment 【054-Spiral Matrix(螺旋矩陣)】 【LeetCode-面試算法經典-Java實現】【全部題目文件夾索引】 原題   Given a

【LeetCode-面試算法經典-Java實現】【059-Spiral Matrix II(螺旋矩陣II)】

mod 最大 http 計算 spiral tro parent 全部 matrix 【059-Spiral Matrix II(螺旋矩陣II)】 【LeetCode-面試算法經典-Java實現】【全部題目文件夾索引】 原題   Given

[LeetCode] 73. Set Matrix Zeroes Java

ger 是否 -s could ret ext hash blog span 題目: iven a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in place. c

leetcode-73- 矩陣置零(set matrix zeroes)-java

題目及測試 package pid073; /*矩陣置零 給定一個 m x n 的矩陣,如果一個元素為 0,則將其所在行和列的所有元素都設為 0。請使用原地演算法。 示例 1: 輸入: [ [1,1,1], [1,0,1], [1,1,1] ] 輸出: [ [1,0

資料結構之Java實現底層Set

Set也是一種重要資料結構,其特點為不允許出現重複元素,不保證集合中的元素順序,可以有元素為null但只允許出現一次。首先定義了一個Set介面,根據前面幾篇文章實現的連結串列和二分收索樹實現Set資料結構,下面是實現過程 Set介面 public interface Se

javaSet集合的遍歷及實現類比較分析

java中Set集合是一個不包含重複元素的Collection,首先我們先看看遍歷方法 package com.sort; import java.util.HashSet; import java.util.Iterator; import java.util.Set;

java 集合 —— Set 實現類之 HashSet

原始碼基於jdk 1.7.81 HashSet 簡介 HashSet 是一個元素不能重複的集合。 HashSet 中當新增的元素有重複時,新增失敗。 HashSet 是 Set 的一個實現類,而 Set 又繼承了Collection 方法,並且沒有新增多餘的方法。

Java實現Redis的集合(set)命令

下面測試redis的集合set的型別,註釋裡面的程式碼是linux中redis命令 package com.huadian.set; import com.huadian.redisUntil.JedisPoolUntil; import org.junit.Befo

計算任意一個圖生成樹的個數——Kirchhoff 的Matrix Tree 方法Java實現

計算任意一個圖的生成樹的個數,是Kirchhoff提出的理論,通常稱為Matrix Tree Theorem,原理很簡單:Let G be a graph with V(G)={v1,v2,...,vn},let A={aij}be the adjacentcy matri

純資料結構Java實現(5/11)(Set&Map)

純資料結構Java實現(5/11)(Set&Map) Set 和 Map 都是抽象或者高階資料結構,至於底層是採用樹還是雜湊則根據需要而定。 可以細想一下 TreeMap/HashMap, TreeSet/HashSet 的區別即可 只定義操作介面(操作一致),不管具體的實現,所以即便底層是 BST

JAVA實現EXCEL公式專題(四)——字符串函數

main 問題 int start boolean java ... ringbuf out substring 直接上代碼:/** * 項目名稱: * 文件說明: ExCEL公式類型:字符串公式 * 主要特點: * 版本:1.0 * 制作人:劉晨曦

溫故而知新(java實現)單例模式的七種寫法

反序 防止 代碼 工作 html 我想 變種 evel 才會 第一種(懶漢,線程不安全): Java代碼 public class Singleton { private static Singleton instance; private S

ID3算法Java實現

for 宋體 mar 輸出 信息增益 方法 span 信息熵 指標 ID3算法java實現 1 ID3算法概述 1.1 信息熵 熵是無序性(或不確定性)的度量指標。假如事件A的全概率劃分是(A1,A2,...,An)

java 實現打印當前月份的日歷

mod import static 不同的 cat cep content log boolean 實現當前日歷的打印,當前日期用*來表示。 關鍵得出這個月的第一天是星期幾。 基姆拉爾森計算公式 W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/4

java實現二叉樹的構建以及3種遍歷方法

輸出 for () 如果 順序 bintree 參考 oca gpl 轉載自http://ocaicai.iteye.com/blog/1047397 大二下學期學習數據結構的時候用C介紹過二叉樹,但是當時熱衷於java就沒有怎麽鳥二叉樹,但是對二叉樹的構建及遍歷一

java實現爬蟲功能

ack 訪問 base aid for tail tor obj 執行 /** * 爬取新聞信息,封裝成實體bean */public class GetNews { public List<News> getNews() { // 存儲新聞對象 List&