arrays - F#查找2个数组/列表之间的丢失元素

标签 arrays list f# syntax-error shuffle

“所以,我对F#非常陌生。我希望问题很简单。我一直在研究并环顾四周。我在表达式中的这一点或之前有一个“不完整的结构化构造”错误。我觉得这可能很简单,否则我就走了。

目的是:

有一个非负整数数组。第二个数组是
通过改组第一个元素而形成
数组并删除随机元素。给定这两个数组,找到第二个数组中缺少的元素
数组。不允许线性搜索。

let FindMiss list =
match list with
| [] ->
    []
|firstElem::otherElements ->
    let rand = new Random
    let shuffle (arr : 'a array) =
            let array = Array.copy arr
            let n = array.Length
            for x in 1..n do
                let i = n-x
                let j = rand.Next(i+1)
                let tmp = array.[i]
                array.[i] <- array.[j]
                array.[j] <- tmp
            array
    return array
    array.[rand].delete
|array::list ->
   let  d=collections.defaultdict(int)
   for num in list do
       d[num] +=1
   for num in array1 do 
        if d[num]==0 then return num 
        else d[num]-=1

printfn "The missing Number is: %A" (FindMiss[4;2;1;7;5;6;3;2])

最佳答案

任务是重新实现List.except?

如果没有,只需使用“except”即可:

[1;2;3] |> List.except [1;2]

还是任务“随机删除列表中的元素”?这就是“答案”:https://stackoverflow.com/a/2889972/5514938

关于arrays - F#查找2个数组/列表之间的丢失元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33357928/

相关文章:

java - 有没有办法根据数组内部包含的名称拆分 String ArrayList?

c - 该函数不返回任何值

python - 删除重复值并对相应的列值求和

java - 通过传递一个字符串并将该字符串放在最后一个索引来对 Java List<String> 进行排序

f# - 使用F#结果区分联合结果导致TypeLoadException

java - String.split 未按预期工作

javascript - 只返回数字并从 JavaScript 中的现有数组中删除字符串?

Python:无法从空列表中弹出?什么时候列表显然不为空?

multithreading - F# MailboxProcessor 限制并行度

serialization - 在哪里可以找到 F# 可区分联合的序列化程序?