Three Sum

Find all unique triplets in an array that sum to a target value.

Code

Algorithms
sort($arr);
$result = [];
for ($i = 0; $i < count($arr) - 2; $i++) {
    if ($i > 0 && $arr[$i] === $arr[$i - 1]) continue;
    $l = $i + 1; $r = count($arr) - 1;
    while ($l < $r) {
        $s = $arr[$i] + $arr[$l] + $arr[$r];
        if ($s === $target) {
            $result[] = [$arr[$i], $arr[$l], $arr[$r]];
            while ($l < $r && $arr[$l] === $arr[$l + 1]) $l++;
            while ($l < $r && $arr[$r] === $arr[$r - 1]) $r--;
            $l++; $r--;
        } elseif ($s < $target) $l++;
        else $r--;
    }
}
return $result;

Parameters

Array of numbers

Target sum

Server

More PHP Snippets