美好的一天,

我有一个逻辑问题,我一直坚持。

我有一个向量,其中包含N个整数。可以将其视为一个充满整数的锯齿状数组。

例如:

vector<vector<int>> myVector


(可以说,这些是向量的内容)

myVector[0] = {0,1} myVector[1] = {1,2} myVector[2] = {3,4,5}
myVector[3] = {4,5,6} myVector[4] = {7,8}


我想要做的是合并共享相同元素的向量。如您所见,myvector[0]myvector[1]共享相同的元素值'1',对于myvector 2和3也是如此,因为它们共享相同的元素值'4'。 myVector[4]保持不变,因为它不与其他向量共享任何值

我产生的产品应该是这样的

newVector[0]= {0,1,2} newVector[1]= {3,4,5,6} newVector[2]= {7,8}


请帮忙 :)

最佳答案

一种简单易行的方法是:


如有必要,对各个vector进行预排序
通过i迭代vector<vector<int>>

迭代器ji+1 .. end()
在向量kl中使用迭代器*i*j,将*k*l中的任一个值减小,直到找到共享值或达到end()为止:共享值,将*j附加到*i并重新排序,否则将j



这可能不是最佳解决方案性能的明智选择,但是您可以实施/配置它,并让我们知道您是否必须更快地完成一些工作。

10-08 05:36
查看更多