【发布时间】:2022-01-04 20:37:42
【问题描述】:
我有两个字节数组,它们可能非常大,甚至可能有 700500 个值。
array2总是大于array1,基本和array1中的数据一样,只是随机添加,例如:
int[] array1 = {1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 4, 5, 5, 5, 5, 5, 5, 6, 6, 7, 7, 7, 7, 8, 8, 9, 9, 0, 0, 0};
int[] array2 = {1, 1, 1, 2, 7, 7, 2, 2, 2, 2, 1, 2, 3, 2, 2, 3, 3, 4, 7, 2, 5, 5, 5, 5, 5, 5, 6, 6, 7, 7, 8, 4, 1, 1, 7, 7, 8, 8, 9, 9, 0, 0};
我需要一个array3,它需要与arrays2 具有相同的大小。它将显示添加的确切索引,因此对于此示例,它将是:
int[] array3 = {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0};
(0 = 与数组 1 相同,1 = 与数组 1 不同)
我希望获得与“Beyond Compare”应用程序中相同的结果:
https://i.ibb.co/yX6YCsp/Diff.jpg
但要获取您在图片中看到的红色标记的索引,位于右侧窗格中。
我需要用 C# 编写它。
非常感谢您对此的任何帮助。
【问题讨论】:
-
在某些情况下可能会模棱两可,例如:
array1 = 2,array2 = 22array3 = 01ORarray3 = 10 -
我希望得到尽可能接近 Beyond Compare 应用程序的结果。
-
它显示了 array3 = 01 作为你的例子。
-
我不希望有人为你解决这个问题。在您的示例中,至少有 30 个左右的正确答案,可能更多。仅举几例:
array3 = 000111000011100000110000000000111100000000、array3 = 000011010011100000110000000000111100000000、array3 = 000011001011100000110000000000111100000000。尝试解决问题,遇到困难时再回到这里提出问题 -
@Erik McKelvey 我已经被卡住了...... Beyond Compare 应用程序知道如何解决这个问题,正如您在我链接的图片中看到的那样......所以我正在寻找一种算法会做同样的事情,我不知道怎么做。
标签: c# arrays compare difference