java - 如果行和列中的所有元素都相同,如何检查二维数组?

标签 java arrays algorithm multidimensional-array

我正在尝试用 java 编写一段代码,它会查看行和列中的所有元素是否都相同并打印出它的索引。

例如,如果我有

的二维数组
{ 1, 0, 0, 0, 0}
{ 1, 0, 0, 0, 0}
{ 1, 1, 1, 1, 1}

我想打印出 2,0,这意味着第 2 行中的所有元素都相同,第 0 列中的所有元素也相同并且它们彼此相等。

我试着用 for 语句来做

int[][] array_1 = { {1}, 
                    {1} };
for(int row=0; row<array.length-1; row++){
    for (int col=0; col<array[0].length-1; col++){
        if(array[row][col]==array[row+1][col]&&
           array[row][col]==array[row][col+1]&&
           array[row][col]==array_1[0][0]) {
             System.out.print(row);
             System.out.println(col);      
        }
    }
}

但它不起作用,因为它没有检查所有的行和列,它停在中间的某个地方,我不知道发生了什么。

您有什么建议吗?

最佳答案

您可以通过分离方法来做到这一点。
首先你可以写一个转置方法

public static int[][] transpose(int[][] A) {
        int m = A.length;
        int n = A[0].length;
        int[][] C = new int[n][m];
        for (int i = 0; i < m; i++)
            for (int j = 0; j < n; j++)
                C[j][i] = A[i][j];
        return C;
    }

然后,您可以编写此方法来检查行和列。如果行的元素或列的元素不同,则此方法返回 false。否则返回 true。

public static boolean rowColEquals(int[] array) {
        for (int i = 1; i < array.length; i++) {
            int x = array[0];
            if (x != array[i])
                return false;
        }
        return true;
    }

最后,您可以编写此方法来寻找答案。

public static void findEquals(int[][] array) {
        for (int i = 0; i < array.length; i++) {
            if (rowColEquals(array[i])) {
                System.out.println("All " + array[i][0] + " is equal on row "
                        + i);
            }
        }
        array = transpose(array);
        for (int i = 0; i < array.length; i++) {
            if (rowColEquals(array[i])) {
                System.out.println("All " + array[i][0] + " is equal on colomn "
                        + i);
            }
        }
    }

主要方法如下

public static void main(String[] args) {
int[][] y = { { 1, 0, 0, 0, 0 }, { 1, 0, 0, 0, 0 }, { 1, 1, 1, 1, 1 } };
        findEquals(y);
    }

输出如下。

All 1 is equal on row 2
All 1 is equal on colomn 0

关于java - 如果行和列中的所有元素都相同,如何检查二维数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33530721/

相关文章:

javascript - 添加数组的总和。显示1个输出

java - ArrayList 到数组

algorithm - 我的转换函数是否正确(字符串与有限自动机匹配)

algorithm - 顶点最大入度的有向图

java - mybatis-guice mysql 加载jdbc驱动失败

java - 创建用户定义的数据类型会出现问题

Python/Numpy - 计算相等数组元素的总和

java - 使用 Java 8 流创建 Collection<Stream>

Java 服务器套接字中断如何

java - if 语句打印出 'else' 部分,即使它是正确的