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).