122. Best Time to Buy and Sell Stock IIphp
給定一個數組,表明商品價格。從給定的數組中,計算經過買賣能得到的最大收益。只有賣出才能再買入。算法
一開始覺得是獲取最小值右邊的最大值去賣出。數組
後來發現規律,是在價格拐點進行買入賣出操做。函數
即,先單調遞減後單調遞增時買入,先單調遞增後單調遞減時賣出。.net
<?php class Solution { /** * @param Integer[] $prices * @return Integer */ function maxProfit($prices) { $profit = 0; $buyIndex = -1; $days = count($prices); $increasing = ($prices[0]<$prices[1]); if($increasing){ $buyIndex = 0; } for($i=1; $i<$days; $i++){ //if is increasing perviously if($increasing){ //but starts to decrease //than its time to sell if($prices[$i]>$prices[$i+1]){ if($buyIndex != -1 ){ $profit += $prices[$i]-$prices[$buyIndex]; } $buyIndex = $i+1; $increasing = false; } } else{ //decreasing //starts if($prices[$i]<$prices[$i+1]){ $buyIndex = $i; $increasing = true; } } } return $profit; } }
我我的認爲這個函數並無使用很複雜的算法,可是隻戰勝了28.36%。內存佔用只戰勝了15.79%。有很大的改進空間。code
若以爲本文章對你有用,歡迎用愛發電資助。內存