LeetCode 861. Score After Flipping Matrix in F#
URL
Score After Flipping Matrix - LeetCode
Code
let matrixScore (grid: int[,]) : int =
let rows, cols = Array2D.length1 grid, Array2D.length2 grid
// flip row
for i in 0 .. (rows - 1) do
if grid.[i, 0] = 0 then
for j in 0 .. (cols - 1) do
grid.[i, j] <- if grid.[i, j] = 0 then 1 else 0
// flip col
for j in 1 .. (cols - 1) do
let sum = seq { 0 .. (rows - 1) } |> Seq.fold (fun acc i -> acc + grid.[i, j]) 0
if sum < rows - sum then
for i in 0 .. (rows - 1) do
grid.[i, j] <- if grid.[i, j] = 0 then 1 else 0
seq { 0 .. (rows - 1) }
|> Seq.fold
(fun acc i ->
acc
+ (seq { 0 .. (cols - 1) } |> Seq.fold (fun sum j -> sum * 2 + grid.[i, j]) 0))
0