解题步骤
- 新建一个变量用来统计总利润
- 遍历价格数组,如果当天价格比昨天高,就在昨天买入,今天卖出,否则就不交易
- 遍历结束后,返回所有利润之和
通过深度优先遍历实现
- 时间复杂度:O (n)
空间复杂度:O (1)
function maxProfit(prices) {
let profit = 0;
for (let i = 0; i < prices.length; i++) {
if (prices[i] > prices[i - 1]) {
profit += prices[i] - prices[i - 1];
}
}
return profit;
}
在代码中存在一个 for 循环,所以时间复杂度是 O (n)。而空间复杂度是 O (1),因为没有临时存储会线性增长的变量。