问题描述:
给定一个m×n矩阵,如果一个元素是0,则将其所在行和列全部元素变成0。
需要在原矩阵上完成操作。
样例:
给出一个矩阵
[
[1, 2],
[0, 3]
]
返回
[
[0, 2],
[0, 0]
]
代码:
public class Solution {
/*
* @param matrix: A lsit of lists of integers
* @return:
*/
public void set(int [][]matrix,int col,int raw){
//把第raw行置0
for(int i=0;i<matrix[raw].length;i++)
matrix[raw][i]=0;
//把col列置0
for(int i=0;i<matrix.length;i++)
matrix[i][col]=0;
}
public void setZeroes(int[][] matrix) {
// write your code here
ArrayList<Integer> listcol=new ArrayList<Integer>();//存储有0的列数
ArrayList<Integer> listraw=new ArrayList<Integer>();//存储有0的行数
for(int i=0;i<matrix.length;i++){
for(int j=0;j<matrix[i].length;j++){
if(matrix[i][j]==0){
listcol.add(j);
listraw.add(i);
}
}
}
for(int i=0;i<listcol.size();i++){
set(matrix, listcol.get(i), listraw.get(i));
}
}
//输出
public void print(int [][]a){
for(int i=0;i<a.length;i++){
for(int j=0;j<a[i].length;j++){
System.out.print(a[i][j]+"\t");
}
System.out.println();
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int [][]matrix=new int[][]{{1,2},{0,3}};
Solution s=new Solution();
s.print(matrix);
s.setZeroes(matrix);
s.print(matrix);
}
}