一. 题目描述
二. 解题思路
要求最大的利润,我们就需要对每一步实时更新利润。
我们将prices数组的第一个元素设为最低价格,从数组的第2个元素开始遍历,若当前元素小于最低价格则将最低价格更新为当前元素,若当前元素高于最新价格,则将这一步利润的累加到总利润中,也将当前价格设为最低价格,因为这样的话,如果下一个价格也高于最低价格,对利润并无影响。如果下一个价格低于最低价格则最低价格又会更新,对结果并无影响。
三. ac代码
int maxProfit(int* prices, int pricesSize){
int lowprice = prices[0];
int highprice = 0;
int profit = 0;
for (int i = 1; i < pricesSize; i ++ ) {
if (prices[i] < lowprice) {
lowprice = prices[i];
}
if (prices[i] >= lowprices) {
profit += prices[i] - lowprices;
}
}
return profit;
}
执行情况
over!