Advertisement
ptrelford

Find Missing Number implementations

Nov 7th, 2013
200
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
F# 0.62 KB | None | 0 0
  1. open System.Collections.Generic
  2.  
  3. let findImperative (xs:int[]) =
  4.     System.Array.Sort(xs)
  5.     let mutable i = 1
  6.     while i <= xs.Length && xs.[i-1] = i do i <- i + 1
  7.     i
  8.  
  9. open System.Collections
  10.  
  11. let findBits (xs:IList<int>) =
  12.     let ys = BitArray(xs.Count)
  13.     for x in xs do ys.[x-1] <- true
  14.     let mutable i = 1
  15.     while i <= xs.Count && ys.[i-1] do i <- i + 1
  16.     i
  17.  
  18. let find (xs:IList<int>) =
  19.     let rec f (a,b) =
  20.         let m = a + (b - a) / 2
  21.         if a = b then m + 1
  22.         elif xs.[m] = m then m
  23.         elif xs.[m] = m + 1 then f (m+1,b)        
  24.         else f (a,m)
  25.     f (0,xs.Count)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement