检查每行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++的数组行中是不是总是有相同的值的主要内容,如果未能解决你的问题,请参考以下文章