题目:
题目截图:
解题步骤:
使用贪心算法,只顾眼前,先追求局部最优解,然后发现它也是全局最优解,符合题意
前提:上帝视角,知道未来的价格
局部最优:见好就收,见差就不动,不作任何长远打算,并且这个利润还不是净利润(不减本钱),
并且还不需要考虑能不能买得起这个问题,只是计算付出和挣取之间的差价而已
1.新建一个变量,用来统计总利润
2.遍历价格数组,如果当前价格比昨天高(所以i从1开始),就在昨天买,今天卖,否则就不交易
3.遍历结束后,返回所有利润之和
代码:
/**
* @param {number[]} prices
* @return {number}
*/
var maxProfit = function (prices) {
if (!prices || !prices.length) return 0;
let profit = 0;
for (let i = 1; i < prices.length; i++) {
if (prices[i] > prices[i - 1]) {
profit += prices[i] - prices[i - 1];
}
}
return profit;
};
时间复杂度分析:
时间复杂度是O(n)
空间复杂度分析:
空间复杂度是O(1)
怎么样,是不是很简单,你学会了吗 ?
如果这篇文章能够帮助到您,希望您不要吝惜点赞👍👍和收藏💖💖,您的支持是我继续努力的动力 💪💪 !!!