买卖股票的最好时机(二)
1、题意重述
假设你有一个数组prices,长度为n,其中prices[i]是某只股票在第i天的价格,请根据这个价格数组,返回买卖股票能获得的最大收益
- 你可以多次买卖该只股票,但是再次购买前必须卖出之前的股票
- 如果不能获取收益,请返回0
- 假设买入卖出均无手续费
换句话说,就是根据相邻两天的价格,判断能否出售股票。
2、思路整理
使用贪心的思想:
遍历数组,判断prices[i]和prices[i-1]的大小,利用贪心的思想,只要涨价,就卖股票,然后记录差价,最后输出结果。
3、代码实现
class Solution {
public:
int maxProfit(vector<int>& prices) {
int ans = 0;
for(int i = 1 ; i < prices.size() ; i++)
{
if(prices[i]>prices[i-1]) // 贪心思想
{
ans+= prices[i]-prices[i-1];
}
}
return ans; //返回结果
}
};
4、复杂度分析
时间复杂度:一层循环,因此时间复杂度为。
空间复杂度:使用了常数级内存地址空间,因此空间复杂度为。