Question

A php solution to a question "find the first pair that adds up to 10". Refresh for another random array.

Answer by Rachel C

[2, 2, 10, 8, 10, 5]

First pair = 0, 3.

Other pair --
First pair = 0, 3.
<?php # randomly generate an array $arrayLength = rand(3, 20); $arr = array(); for ($i = 0; $i < $arrayLength; $i++) { array_push($arr, rand(0, 10)); } print "["; for ($i = 0; $i < $arrayLength; $i++) { if ($i > 0) print ", "; print $arr[$i]; } print "]"; print "

"; $match = getFirstPair($arr); printMatch($match); print "

Other pair --
"; $match = getFirstPairDouble($arr); printMatch($match); function printMatch($match) { if (count($match) == 2) { print "First pair = " . $match[0] . ", " . $match[1] . "."; } else { print "No pair that adds to 10."; } } function getFirstPair($arr) { $hashMap = array(); for ($i = 0; $i < 11; $i++) { $hashMap[$i] = -1; } for ($i = 0; $i < count($arr); $i++) { $value = $arr[$i]; $match = 10 - $value; if ($hashMap[$match] >= 0) { return array($hashMap[$match], $i); } if ($hashMap[$value] == -1) $hashMap[$value] = $i; } } function getFirstPairDouble($arr) { for ($i = 1; $i < count($arr); $i++) { for ($j = 0; $j < $i; $j++) { if ($arr[$i] + $arr[$j] == 10) { return array($j, $i); } } } } ?>