题解 | #牛群买卖计划III#
牛群买卖计划III
https://www.nowcoder.com/practice/47ce4c953769468e8b8b727af3cbebf5
考察的知识点:动态规划;
解答方法分析:
- 判断价格数组的是否小于等于1,如果是,则返回0。
- 初始化变量profit和sell,分别表示总利润和卖出价格,初始值设为0。
- 从数组倒数第二天开始循环遍历到第一天,依次比当前价格和卖出价格。
- 如果当前价格小于卖出价格,说明可以进行卖出交易,此时将卖出价格减去当前价格并加入利润中。
- 如果当前价格大于等于卖出价格,说明无法进行卖出交易,此时更新卖出价格为当前价格。
- 遍历结束后,返回利润值。
所用编程语言:C++;
完整编程代码:↓
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param prices int整型vector
* @return int整型
*/
int maxProfitIII(vector<int>& prices) {
if (prices.size() <= 1) {
return 0;
}
int profit = 0;
int sell = prices[prices.size() - 1];
for (int i = prices.size() - 2; i >= 0; i--) {
if (prices[i] < sell) {
profit += sell - prices[i];
} else {
sell = prices[i];
}
}
return profit;
}
};
