繁体   English   中英

C#-Array2包含Array1忽略顺序

[英]C# - Array2 contains Array1 ignore order

如果要编写一段在Array2中查找Array1的代码,而不考虑顺序(记住重复项),我应该在哪里看? 例如

Array1: { 2,5,6,6,3 }
Array2: { 1,2,3,4,5,6,6 }
will return true


Array1: { 2,5,6,6,3 }
Array2: { 1,2,3,4,5,6 }
will return false

我有点想解决这个问题,我只需要指出一些方向。

提前致谢。

好吧,由于您只需要提示而不是代码,因此一种方法是:

  1. array2复制到List<int>

  2. 排序

  3. 分配一个位阵列称为used等于所述列表的大小。 这些将是标志,指示已排序列表中的特定项目是否已用于匹配。

  4. 对于每个项目itemarray1

    4.1 二进制搜索排序列表item

    4.2。 如果未找到,则返回false - array2不包含array1

    4.3。 如果找到,并且有重复项,则二进制搜索算法将随机返回其中一个重复项的索引。 在列表中与item匹配的部分中向后扫描,直到找到used[i]为false的项目。 如果找到一个,则将used[i]设置为true,然后继续外部循环。 如果找不到,请从初始二进制搜索索引向前扫描,尝试查找未使用的匹配项。 类似地,如果找到一个,则将used[index]设置为true,并继续遍历array1

    4.4如果未找到未使用的匹配项,则返回false- array2不包含array1

  5. 找到array1每个项目的未使用匹配项后,返回true: array1包含在array2内部。

该算法的一个优点是,要检查多个数组是否包含在给定数组中,您不需要每次都对数组进行重新排序,只需要重新分配BitArray

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM