我们必须检查两个给定的链表是否包含相同的数据。在这种情况下,顺序无关紧要,这意味着{1,3,2}
和{2,1,3}
是相同的。我认为我们应该引入一个新变量counter=0
并执行以下过程:
while(node1->next!=NULL)
{
int value=node1->value;
if(contains(node2,value)){
counter++;
}
node1=node1->next;
if(counter== number of elements in node 1)
return true;
else return false;
}
另一种方法是对两个列表进行排序并逐个节点进行比较。哪一个是最优的?在第一种情况下,它需要 O(n^2) 次操作,而在第二种情况下,如 Nlog(N)+O(N),(如果我们使用归并排序)。我的想法是对的吗?还是有其他最佳方法?