70. Climbing Stairs

foreach 解法:

class Solution {
    /**
     * @param Integer $n
     * @return Integer
     */
    function climbStairs($n) {
        if ($n <= 2) {
            return $n;
        }
        $result = [0, 1, 2];
        foreach(range(3, $n) as $target) {
            $result[$target] = $result[$target - 1] + $result[$target - 2];
        }

        return $result[$n];
    }
}

時間與空間都很省的解法

class Solution {
    /**
     * @param Integer $n
     * @return Integer
     */
    function climbStairs($n) {
        if ($n <= 2) {
            return $n;
        }
        $result = 0;
        $first = 0;
        $second = 1;
        foreach(range(1, $n) as $step) {
            $result = $first + $second;
            $first = $second;
            $second = $result;
        }

        return $result;
    }
}

Last updated