gpt4 book ai didi

java - 查找二维数组中非零数沿轴的索引

转载 作者:行者123 更新时间:2023-12-01 11:20:40 25 4
gpt4 key购买 nike

解决了以下问题,这是解决此问题的暴力方法。任何人都可以帮助我找到更好的解决方案。它需要返回索引,所以我使用了 String 作为返回类型,这里在返回索引的情况下也需要一些改进。

public class FindNonNegativeAxisIndex {

public static String getAxisIndex(int arr[][], int row, int col) {

int rowCount = 0;
int colCount = 0;
if (row == 0 && col == 0)
return null;

for (int i = 0; i < row; i++) {
rowCount = 0;
colCount = 0;
for (int j = 0; j < col; j++) {
if (arr[i][j] > 0) {

for (int k = 0; k < row; k++) {
if (arr[k][j] > 0)
rowCount++;

}

for (int l = 0; l < col; l++) {
if (arr[i][l] > 0)
colCount++;
}
if (rowCount == 1 && colCount == 1)
return i + " " + j;
}
}
}

return null;

}

public static void main(String[] args) {

int arr[][] = { { 0, 0, 3, 0 }, { 0, 1, 0, 0 }, { 0, 0, 2, 4 },
{ 5, 0, 0, 0 } };
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
System.out.print(arr[i][j] + "\t");
}
System.out.println();
}
String value = getAxisIndex(arr, 4, 4);
String index[] = value.split(" ");
System.out.println("row " + index[0] + " col " + index[1]);

}

}

最佳答案

想到的最简单的事情是只检查每一行一次。我们沿着行寻找非空值。如果我们恰好找到一次这样的值,那么我们也会检查该列,否则转到下一行。这样你最多有两个嵌套循环。

另请注意,一旦我们发现当前数字不令人满意,就无需迭代循环。在这种情况下我们可以使用break。最后,您不应该创建一个字符串,然后拆分它。最好返回一个自定义对象,但为了简单起见,返回一个两元素 int[] 数组也可以。完整代码如下:

public static int[] getAxisIndex(int arr[][], int row, int col) {
if (row == 0 && col == 0)
return null;

for (int i = 0; i < row; i++) {
int nonNullCol = -1;
for(int j=0; j<col; j++) {
if(arr[i][j] != 0) {
if(nonNullCol == -1) {
nonNullCol = j;
} else {
nonNullCol = -1;
break;
}
}
}
if(nonNullCol != -1) {
for(int ii = 0; ii < row; ii++) {
if(ii != i && arr[ii][nonNullCol] != 0) {
nonNullCol = -1;
break;
}
}
if(nonNullCol != -1)
return new int[] {i, nonNullCol};
}
}
return null;
}

public static void main(String[] args) {

int arr[][] = { { 0, 0, 3, 0 }, { 0, 1, 0, 0 }, { 0, 0, 2, 4 },
{ 5, 0, 0, 0 } };
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
System.out.print(arr[i][j] + "\t");
}
System.out.println();
}
int[] idx = getAxisIndex(arr, 4, 4);
if(idx == null)
System.out.println("Not found");
else
System.out.println("row " + idx[0] + " col " + idx[1]);
}

关于java - 查找二维数组中非零数沿轴的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31258834/

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