Skip to content

Latest commit

 

History

History
49 lines (36 loc) · 1.79 KB

121.md

File metadata and controls

49 lines (36 loc) · 1.79 KB

✏️Leetcode基础刷题之(121. Best Time to Buy and Sell Stock)

2019-03-07 吴亲库里 库里的深夜食堂


✏️描述

(给定一个数组,其中第i个元素是第i天股票的价格,如果要求你只能完成一笔交易(买入卖出),用一个算法求出你最大的利润(最大的卖出值-减去最小的买入值)。


✏️题目实例

✏️题目分析

如果数组只有一个数的话,那么利润空间就直接是0了。我们先取出数组的第一个值,当成最小的值,循环数组,只要循环中有比这个数小的,那么把这个健值赋值给最小的数,如果当前循环中大于这个最小值,那么相减,获取最大值存入我们预先定义的变量中。然后遍历整个数组,最后得出最大的利润空间.

       /**
         * @param Integer[] $prices
         * @return Integer
         */
        function maxProfit($prices) {
            $min=$prices[0];
            $max=0;
            for($i=0;$i<count($prices);$i++) {
                if($min>$prices[$i]) {
                    $min=$prices[$i];
                }
                
                $max=max($prices[$i]-$min,$max);
            }
            return $max;
        }

✏️时间复杂度

一个for循环,取决于数组$prices的个数n,所以时间复杂度是O(n),空间复杂是常量O(1).

联系