检查每行C++的数组行中是不是总是有相同的值

Posted

技术标签:

【中文标题】检查每行C++的数组行中是不是总是有相同的值【英文标题】:Check if there is always the same value in the row of an array for each row C++检查每行C++的数组行中是否总是有相同的值 【发布时间】:2018-05-06 21:16:56 【问题描述】:

我正在寻找能够浏览 2D 数组(矩阵)并检查每行是否有不同值的算法或代码。 如果值不同,我们返回 1 else 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

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

提前感谢您的帮助

最好的问候

【问题讨论】:

但是你试过了吗?如果您自己似乎没有付出任何努力来解决问题,您就不太可能找到帮助 矩阵是原生数组吗?一维数组(所有元素在内存中线性排列,但使用两个坐标访问)还是数组数组?缺少的元素是 0 并且被忽略了吗?或者,如果它不是原生数组,它是定制的稀疏矩阵实现吗?行优先还是列优先? 为什么会有空单元格? 我没有足够的逻辑来做那件事 这是一个自定义二维数组 【参考方案1】:

试试这个时间复杂度为 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

【讨论】:

我不明白你为什么将电流初始化为0 如果一行有0 0 0 0 0 2 3,那么 curr 将是 0 直到它达到 2,之后,由于 2!=3,这一行将返回 1 我已经更新了我的答案,确实有一个错误。让我知道这是否仍然令人困惑或不起作用

以上是关于检查每行C++的数组行中是不是总是有相同的值的主要内容,如果未能解决你的问题,请参考以下文章

检查不同其他列中每行的值是不是相同

检查两个数组的值是不是相等且顺序相同[关闭]

检查数组中的多个元素是不是包含相同的值

如何遍历数据框的行并检查列行中的值是不是为 NaN

检查输入的值是不是与数据库中其行中的另一个相关联

检查列中的值是不是存在于数据框行中的其他位置