c - 删除矩阵中相同的行

标签 c math matrix

有人可以帮我解决这个问题吗?删除矩阵中相同行的最快方法是什么?例如。如果有 3 行相同,则删除 2 行。

例如

0 1 0
0 1 0
0 1 0
1 1 1

将会

0 1 0
1 1 1

最佳答案

根据明确定义的顺序对矩阵的行进行排序(例如 lexicographical ordering ),然后比较相邻行,删除发现的重复项。如果需要恢复原始行排序,您可以跟踪通过排序产生的行排列,然后在消除重复项后反转该排列 行。

在不排序的情况下执行任何类型的成对比较来查找重复项的时间复杂度为 O(N2),而首先排序的时间复杂度为 O(N log N),其中 N 是行数。

如果您对实现的具体细节有疑问,您需要让我们知道您迄今为止所尝试的内容,并描述它为何未达到您的期望。

关于c - 删除矩阵中相同的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15593304/

相关文章:

c++ - 整数除法舍入库?

java - 如何根据正态(高斯)分布对网格(矩阵)的单元格进行采样?

python - 如何在 Python 中对图形进行聚类?

.net - Windows 放大 API、.NET 和矩阵

c - 相同的指针在不同的编译器中显示不同的大小

c - 删除 C 程序中的所有注释 - 此代码是否有任何可能的改进?

c - '…' 标记之前是否需要声明说明符或 '<'?

c++ - 如何将字符数转换为十进制数并返回或将 ASCII 'A' -'Z'/'a' -'z' 转换为字母偏移量 0 for 'A'/'a' ...?

java - 嵌套循环到数学模型中以计算操作次数

c++ - 如何使用 Yaw、Pitch、Roll 和 len 在我的空间中获取 3D 点