向下移动矩阵的元素java

我想给出一个矩阵,任何数字,如果它发现零,降低那些非空的元素。 例如,对于矩阵向下移动矩阵的元素java

1 2 3 4 5 

6 7 8 0 0

0 12 0 14 0

0 0 18 19 0

0 22 23 24 25

输出将是

0 0 0 0 0 

0 2 3 4 0

0 7 8 14 0

1 12 18 19 5

6 22 23 24 25

剩余上面的零,移动元件向下顺序。我有这样的代码:

public static void displace(int[][] matrix, int size) { 

int cont=1;

for (int col = 0; col < size; col++) {

cont = 1;

for (int row = 0; row < size; row++) {

if (matrix[row][col] == 0) {

matrix[row-1][col]=matrix[row][col];

cont++;

}

}

}

}

,这让我是一个零,以取代该行的第一个数字,那就是,它采用零和位置上升的唯一的事情。

回答:

对于未来的问题,考虑发布mcve像乔C评论。 消除任何不相关(如int[] colorint position像STaefi评论),并以易于提供的测试数据使用的形式,像这样:

public static void main(String[] args) { 

int[][] matrix1 = {{1,2, 3 ,4 ,5},

{6,7, 8, 0, 0},

{0,12, 0,14, 0},

{0,0, 18,19, 0},

{0,22,23,24, 25}

} ;

displace(matrix1);

for(int[] row : matrix1) {

System.out.println(Arrays.toString(row));

}

}

至于解决:你需要重复这个过程,直到所有掉期都完成了。

public static void displace(int[][] matrix) { 

int swapCount= 1;

while (swapCount > 0) {

swapCount = 0;

for (int col = 0; col < matrix[0].length; col++) {

for (int row = 0; row < matrix.length; row++) {

if (matrix[row][col] == 0) {

if(((row-1) >= 0) && (matrix[row-1][col] != 0)) {

//do swap

matrix[row][col] = matrix[row-1][col];

matrix[row-1][col]= 0;

swapCount++;

}

}

}

}

}

}

以上是 向下移动矩阵的元素java 的全部内容, 来源链接: utcz.com/qa/259958.html

回到顶部