给定2个数组我需要一个C函数/库,它将查找2个数组之间的不同。C库查找两个数组之间的区别
array1[] ={"a","b","c","e"}
array2[] ={"a","c","e"}
和函数应该返回
{"b"}
这2个阵列保证进行排序,但不相同的尺寸。我只需要这个功能就快。
给定2个数组我需要一个C函数/库,它将查找2个数组之间的不同。C库查找两个数组之间的区别
array1[] ={"a","b","c","e"}
array2[] ={"a","c","e"}
和函数应该返回
{"b"}
这2个阵列保证进行排序,但不相同的尺寸。我只需要这个功能就快。
下面是一个O(n)的算法:
创建两个指针,每个初始化在每个阵列的第一元素指向。每次* p1 < * p2,将* p1添加到输出数组并增加p1。 p2相同。如果它们相等,则增加两者。
我会让你弄清楚如何处理重复的元素,以及当一个指针到达它的数组末尾时该怎么做。
[此外,如果你能使用C++,那么你应该只使用std::set_symmetric_difference]
@Oli查尔斯沃思
如果ARR1 [] = { “A”, “B”,”在这种情况下,我猜你的逻辑将遍历数组中的元素(以较低者为准),但是没有必要,如下所示:在这种情况下,我猜你的逻辑将会遍历数组中的元素(以较低者为准),但并不需要第一个比较只有你能找到结果因此结果是可能的o(1)这种情况.....
“b”是唯一的,因为它不会在这两个数组中都不存在,我还没有尝试过任何东西,只需要多次遍历两个数组,但我需要它比这更快。 – Icestorm
@Iststorm:好的,道歉,也许在某种程度上,你可以称之为'b''unique',尽管如果你有数组{',a,b,b}和'{c,c ,d,d}'。最好避免这种不必要的含糊术语。我认为你正在寻找“设置差异”或“对称差异”。 –
它为什么要快?为什么它应该使用库函数? – wildplasser