1. Two Sum
/**
* @param Integer[] $nums
* @param Integer $target
* @return Integer[]
*/
function twoSum($nums, $target) {
$table = [];
foreach($nums as $key => $num) {
$diff = $target - $num;
$prevKey = array_search($diff, $table);
if ($prevKey !== false) {
return [$prevKey, $key];
} else {
$table[$key] ??= $num;
}
}
}
比較好理解的寫法:
https://leetcode.com/problems/two-sum/solutions/3515647/two-sum-too-clean
class Solution {
/**
* @param Integer[] $nums
* @param Integer $target
* @return Integer[]
*/
function twoSum($nums, $target) {
foreach($nums as $key => $num) {
foreach($nums as $subKey => $subNum)
if ($key !== $subKey && ($nums[$key] + $nums[$subKey]) === $target) {
return [$key, $subKey];
}
}
}
}
Last updated