一、題目
假設你有一個數組,它的第i個元素是一個股票在一天的價格。
設計一個算法,找出最大的利潤。
二、分析
如果當前值高於買入值,那麼就賣出,同時買入今天的股票,並獲利。如果當前值低於買入值,那麼就放棄之前的股票,同時買入今天的股票,以待升值,此時也不虧損。
舉例:
2 9 6 3 6 1
第1天,買入2;
第2天,9>2,賣出,獲利7,並買入9;
第3天,6<9,放棄9,買入6;
第4天,3<6,放棄6,買入3;
第5天,6>3,賣出,獲利3,並買入6;
第6天,1<6,放棄6,買入1,結束。
總獲利:7+3= 10。
需要注意的是在獲取數組的長度時,在vector
class Solution {
public:
int maxProfit(vector &prices) {
int length = prices.size();
if(length==0) return 0;
int profit = 0;
int flag,difference;
for(flag=1;flag0)
profit+=difference;
}
return profit;
}
};