Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- open System.Collections.Generic
- let findImperative (xs:int[]) =
- System.Array.Sort(xs)
- let mutable i = 1
- while i <= xs.Length && xs.[i-1] = i do i <- i + 1
- i
- open System.Collections
- let findBits (xs:IList<int>) =
- let ys = BitArray(xs.Count)
- for x in xs do ys.[x-1] <- true
- let mutable i = 1
- while i <= xs.Count && ys.[i-1] do i <- i + 1
- i
- let find (xs:IList<int>) =
- let rec f (a,b) =
- let m = a + (b - a) / 2
- if a = b then m + 1
- elif xs.[m] = m then m
- elif xs.[m] = m + 1 then f (m+1,b)
- else f (a,m)
- f (0,xs.Count)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement