矩阵置零(两种方法)
Posted 勇敢*牛牛
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了矩阵置零(两种方法)相关的知识,希望对你有一定的参考价值。
矩阵置零
给定一个m×n的矩阵,如果一个元素为0,则将其所在行和列的所有元素都设为0。
public class 矩阵置零 {
public static void main(String[] args) {
int array_1[][] = {
{1,1,1},
{1,0,1},
{1,1,1}};
int array_2[][] = {
{0,1,2,0},
{3,4,5,2},
{1,3,0,5}};
int array_3[][] = fun(array_2);
// int array_3[][] = fun_1(array_2);
for(int a[]:array_3) {
for(int b:a) {
System.out.print(b+"\\t");
}
System.out.println();
}
}
static int[][] fun(int array[][]){
boolean m[] = new boolean[array.length];//行
boolean n[] = new boolean[array[0].length];//列
int i,j;
for(i=0;i<array.length;i++) {
for(j=0;j<array[i].length;j++) {
if(array[i][j] == 0) {
m[i] = true;
n[j] = true;
}
}
}
for(i=0;i<array.length;i++) {
for(j=0;j<array[i].length;j++) {
if(m[i]||n[j]) {
array[i][j] = 0;
}
}
}
return array;
}
static int[][] fun_1(int array[][]){
boolean row = false;
boolean col = false;
for(int i=0;i<array.length;i++) {
for(int j=0;j<array[i].length;j++) {
if(array[i][j] == 0) {
if(i==0) {
row = true;
}
if(j==0) {
col = true;
}
array[i][0] = array[0][j] = 0;
}
}
}
for(int i=1;i<array.length;i++) {
for(int j=1;j<array[0].length;j++) {
if(array[i][0] == 0 || array[0][j] == 0) {
array[i][j] = 0;
}
}
}
if(row) {
for(int i=0;i<array[0].length;i++) {
array[0][i] = 0;
}
}
if(col) {
for(int i=0;i<array.length;i++) {
array[i][0] = 0;
}
}
return array;
}
}
以上是关于矩阵置零(两种方法)的主要内容,如果未能解决你的问题,请参考以下文章