“所以,我对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/