【问题标题】:How to know if two arrays have at least one equal element (f#)如何知道两个数组是否至少有一个相等的元素(f#)
【发布时间】:2014-08-28 23:33:33
【问题描述】:

我有一个关于比较数组的问题。 我有两个数组:

   let A = [|1;2;3;4;5|]
   let B = [|2;7|]

如果它们至少有一个相等的元素,我现在想。如果他们有返回真。 我尝试使用这样的功能:

   let exists = Array.exists2 (fun elem1 elem2 -> elem1 = elem2)
   exists A B

在这种情况下应该返回true。 但它有一个问题,因为它仅在数组具有相同长度时才有效。怎么能做一个不同长度的函数呢?

【问题讨论】:

标签: arrays f#


【解决方案1】:

可能更简单:

let exists a b = (Set.ofArray a, Set.ofArray b) ||> Set.intersect |> (<>) Set.empty

【讨论】:

    【解决方案2】:
    let exists a b = Array.exists (Set.ofArray a).Contains b
    

    【讨论】:

      【解决方案3】:

      一种方法是计算两组的交集

      let aset,bset = Set.ofArray A, set.ofArray B
      Set.Intersect aset,bset |> Set.toSeq |> Seq.length |> function |0 -> false _ -> true
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-05
        • 2011-09-07
        • 2015-12-02
        相关资源
        最近更新 更多