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