检查每行C ++的数组行中是否始终存在相同的值

时间:2018-05-06 21:16:57

标签: c++ arrays algorithm loops

我正在寻找能够浏览2D数组(矩阵)的算法或代码,并检查每行是否有不同的值。 如果值是不同的,我们返回1,否则为0

一个例子更好:

    0   1   2   3
0       2
1           2   4
2               6
3   1

在0; 2的情况下,我们得到值2 在案例2; 3中我们有值6

在第1行的示例中,我们有2个值(1; 2和1; 3):2和4。 2和4不相等,我们可以退出循环并返回1

    0   1   2   3
0       2   2
1           1   1
2               6
3   4

在另一个例子中,在第一行中,所有值都等于2,所以我们进入第二行,所有值都等于1,我们进入第三行,所有值等于6,并且最后一行,所有值都等于4,所以我们返回0

我真的不知道我能以什么方式做到这一点

提前感谢您的帮助

祝你好运

1 个答案:

答案 0 :(得分:0)

尝试使用时间复杂度为O(N * M)的解决方案

    //N = Number of rows
    //M = Number of cols
    //arr is the 2D array

   for (int i = 0; i < N; i++) {
        int curr = 0;
        for (int j = 0; j < M; j++) {
            if (arr[i][j] != 0) {
                if (curr == 0) {
                    curr = arr[i][j];
                } else if (arr[i][j] != curr) {
                    //This row has different values
                    return 1;
                }
            }
        }
    }
    return 0; //All rows have the same value