In effort to learn OCaml, I'm going through some easy LeetCode problems and attempting to implement them. I arrive at the correct answer, but I'm still developing an intuition for canonical OCaml code. I'd appreciate any feedback on my implementation.
As mentioned, this is problem 1 on LeetCode. A quick summary of the problem: given an array of integers, return the indices of the 2 numbers that sum to a given "target".
For example, given nums: [2, 7, 11, 15]
and target: 13
, the result should be [0, 2]
(the integers at indices 0
and 2
sum to 13
).
Furthermore, we can assume a unique solution exists for the given array and target.
Here is my refined attempt at implementing this in OCaml:
let two_sum nums target =
let rec aux i j =
let n1 = List.nth nums i in
let n2 = List.nth nums j in
if n1 + n2 = target then [i; j]
else if j = (List.length nums) - 1 then aux (i + 1) (i + 2)
else aux i (j + 1)
in aux 0 1;;
I appreciate any feedback.