LeetCode 581. Shortest Unsorted Continuous Subarray in F#
URL
leetcode.com/problems/shortest-unsorted-con..
Code
github.com/syohex/dotnet-study/blob/master/..
open System
let findUnsortedSubarray (nums: int list) : int =
let sorted = nums |> List.sort
let len = nums.Length
let vals =
nums
|> List.zip sorted
|> List.mapi (fun i (a, b) -> i, a, b)
let left, right =
vals
|> List.fold
(fun (left, right) (i, a, b) ->
if a <> b then
(Math.Min(left, i)), (Math.Max(right, i))
else
left, right)
(len, 0)
if left = len then
0
else
right - left + 1