LeetCode 1282. Group the People Given the Group Size They Belong To in F#
URL
Group the People Given the Group Size They Belong To - LeetCode
Code
https://github.com/syohex/dotnet-study/tree/master/fsharp/leetcode/problems/1282/main.fsx
let groupThePeople (groupSizes: int list) : int list list =
groupSizes
|> List.indexed
|> List.fold
(fun acc (i, group) ->
match Map.tryFind group acc with
| Some(v) -> Map.add group (i :: v) acc
| None -> Map.add group [ i ] acc)
Map.empty
|> Map.fold
(fun acc k v ->
let len = List.length v
let chunks = List.splitInto (len / k) (List.rev v)
chunks @ acc)
[]
|> List.rev