LeetCode 354. Russian Doll Envelopes in F#
URL
leetcode.com/problems/russian-doll-envelopes
Code
github.com/syohex/dotnet-study/blob/master/..
let maxEnvelopes (envelopes: (int * int) list) : int =
let envs =
envelopes
|> List.sortWith (fun (w1, h1) (w2, h2) ->
if w1 = w2 then
compare h2 h1
else
compare w1 w2)
let dp = Array.zeroCreate envs.Length
let mutable len = 0
for (_, height) in envs do
let p =
System.Array.BinarySearch(dp, 0, len, height)
let p' = if p >= 0 then p else -1 * (p + 1)
dp.[p'] <- height
if p' = len then len <- len + 1
len