买卖股票的最好时机(二)

1、题意重述

假设你有一个数组prices,长度为n,其中prices[i]是某只股票在第i天的价格,请根据这个价格数组,返回买卖股票能获得的最大收益

  1. 你可以多次买卖该只股票,但是再次购买前必须卖出之前的股票
  2. 如果不能获取收益,请返回0
  3. 假设买入卖出均无手续费

换句话说,就是根据相邻两天的价格,判断能否出售股票。

2、思路整理

使用贪心的思想:

遍历数组,判断prices[i]和prices[i-1]的大小,利用贪心的思想,只要涨价,就卖股票,然后记录差价,最后输出结果。

alt

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、复杂度分析

时间复杂度:一层循环,因此时间复杂度为O(N)O(N)

空间复杂度:使用了常数级内存地址空间,因此空间复杂度为O(1)O(1)