LeetCode 88. Merge Sorted Array in F#
URL
leetcode.com/problems/merge-sorted-array
Code
github.com/syohex/dotnet-study/blob/master/..
let merge (nums1: int []) (m: int) (nums2: int []) (n: int) : unit =
let rec merge' (nums1: int []) (m: int) (nums2: int []) (n: int) : int [] =
if m = 0 && n = 0 then
nums1
else
let index = m + n - 1
match m > 0, n > 0 with
| true, true ->
if nums1.[m - 1] >= nums2.[n - 1] then
nums1.[index] <- nums1.[m - 1]
merge' nums1 (m - 1) nums2 n
else
nums1.[index] <- nums2.[n - 1]
merge' nums1 m nums2 (n - 1)
| true, false ->
nums1.[index] <- nums1.[m - 1]
merge' nums1 (m - 1) nums2 n
| false, true ->
nums1.[index] <- nums2.[n - 1]
merge' nums1 m nums2 (n - 1)
| false, false -> failwith "never reach here"
let _ = merge' nums1 m nums2 n
()