我有两个字符串数组(或数组列表,如果更简单的话)。我需要比较这些,找出哪些只存在于第一个数组中,哪些存在于两个数组中,哪些只存在于第二个数组中。这些数组的长度不同,并且可能采用不同的顺序。如果有必要,我想我可以对它们进行排序...
我知道我可以一起解决这个问题,但我认为这可能有一个相当标准和高效/“最佳”的解决方案,我比什么都好奇。
我为此使用了 c#,但如果您想用另一种语言编写解决方案,欢迎任何帮助。
谢谢您的帮助!
最佳答案
如果数组很大,那么您将需要使用对这些操作有效的数据结构;数组不是。
如果数组的大小为 n,那么简单的解决方案是 O(n^2) 时间。
如果您对数组进行排序,那么您可以对它们进行二进制搜索以查找项目;排序可能是 O(n lg n) 并且以每次搜索 lg n 的成本搜索 n 次也将是 O(n lg n) 时间。
如果将每个数组变成 HashSet<T>
首先,您可以在 O(n) 时间和 O(n) 额外空间内完成。
关于c# - 比较两个数组或数组列表,找出相似和不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3284240/