簡體   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