提示:
1 <= prices.length <= 105
0 <= prices[i] <= 104
又是一道动态规划的题
前i天的最大收益 = max{前i-1天的最大收益,第i天的价格-前i-1天中的最小价格}
-
记录今天之前买入的最小值
-
计算今天之前最小值买入,今天卖出的获利,也即今天卖出的最大获利
-
比较每天的最大获利,取最大值即可
所有
leetcode
代码已同步至github
欢迎
star
class Solution {
public int maxProfit(int[] prices) {
if (prices.length <= 1) {
return 0;
}
int minPrices=prices[0];
int maxValue=0;
for (int i = 1; i <
prices.length ; i++) {
maxValue=Math.max(maxValue,prices[i]-minPrices);
minPrices=Math.min(minPrices,prices[i]);
}
return maxValue;
}
}
复杂度分析
- 时间复杂度:O(N)
⭐今天是坚持刷题更文的第9/100天
⭐各位的点赞、关注、收藏、评论、订阅就是一条创作的最大动力
⭐更多算法题欢迎关注专栏《leetcode》
为了回馈各位粉丝,礼尚往来,给大家准备了一条多年积累下来的优质资源,包括 学习视频、面试资料、珍藏电子书等
怎么领取请大家自己找,寻宝游戏现在开始。
找不到可以评论留言,一条就会注意到你。
如果还不行,请私信我。
-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NreWxpYmlhbw==,size_16,color_FFFFFF,t_70)