gpt4 book ai didi

java - 在Java中对二维数组中的列进行就地反转的方法

转载 作者:行者123 更新时间:2023-12-01 13:21:30 24 4
gpt4 key购买 nike

问题被指定为 2D array编写一个反转列的方法。如果可能的话,就去做in-place我已经实现并且工作正常。但它不是 in-place .它使用auxillary storage ,是否可以在不使用矩阵的情况下反转二维数组的列。

Here is my code:
public static int[][] reverseColumns(int[][] matrix){
int rows=matrix.length;
int cols=matrix[0].length;
int temp=0;

int[][] result= new int[rows][cols];

for (int row=rows-1; row >=0; row--){
for (int col=0;col<cols;col++){
result[row][col]=matrix[temp][col];
}
temp++;
}
return result;
}

public static void print2DArray(int[][] result){
for (int i=0; i < result.length;i++){
System.out.println(Arrays.toString(result[i]));

}
}

public static void main(String[] args)
{
int[][] matrix = {
{1,2,3,4},
{5,6,7,8},
{9,10,11,12},
{13,14,15,16}
int[][] result = reverseColumns(matrix);
print2DArray(result);
System.out.println()
};

输出是:

[13, 14, 15, 16]
[9, 10, 11, 12]
[5, 6, 7, 8]
[1, 2, 3, 4]

最佳答案

我按照您的建议遵循了列和行反转的语义:

   1 2 3                                     7 8 9
4 5 6 _______column reversal_______ 4 5 6 (vertically reversed)
7 8 9 1 2 3



1 2 3 3 2 1
4 5 6 _______row reversal__________ 6 5 4 (horizontally reversed)
7 8 9 9 8 7

两者皆可 in-place:对于horizontal (row reversal)这很简单。对于vertical (col reversal) ,它需要更多的理解。这里的方法是;举个例子matrix并尝试按照步骤操作,您就会明白

public static void reverseColumnsInPlace(int[][] matrix){
for(int col = 0;col < matrix[0].length; col++){
for(int row = 0; row < matrix.length/2; row++) {
int temp = matrix[row][col];
matrix[row][col] = matrix[matrix.length - row - 1][col];
matrix[matrix.length - row - 1][col] = temp;
}
}
}

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

for(int row = 0; row < matrix.length; row++){
for(int col = 0; col < matrix[row].length / 2; col++) {
int temp = matrix[row][col];
matrix[row][col] = matrix[row][matrix[row].length - col - 1];
matrix[row][matrix[row].length - col - 1] = temp;
}
}
}

关于java - 在Java中对二维数组中的列进行就地反转的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21996637/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com