Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 24s
Kadane's algorithm in O(n):
let max_subarray xs =
let max_so_far = ref min_int in
let cur = ref 0 in
List.iter (fun x ->
cur := max x (!cur + x);
max_so_far := max !max_so_far !cur
) xs;
!max_so_far
For [-2;1;-3;4;-1;2;1;-5;4] the optimal subarray is [4;-1;2;1] = 6.
Exercises min_int (iter 94), max as global, ref / ! / :=, and
List.iter with two side-effecting steps in one closure body.
46 baseline programs total.
13 lines
239 B
OCaml
13 lines
239 B
OCaml
let max_subarray xs =
|
|
let max_so_far = ref min_int in
|
|
let cur = ref 0 in
|
|
List.iter (fun x ->
|
|
cur := max x (!cur + x);
|
|
max_so_far := max !max_so_far !cur
|
|
) xs;
|
|
!max_so_far
|
|
|
|
;;
|
|
|
|
max_subarray [-2; 1; -3; 4; -1; 2; 1; -5; 4]
|