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

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

https://www.nowcoder.com/practice/fbc5dad3e215457fb82a3ae688eb7281

解法:贪心

贪心策略:拿到所有股票价格呈现上升趋势的差。如图所示:

我们要想赚钱,且保证可以多次买卖该只股票,但是再次购买前必须卖出之前的股票。我们就可以在所有股票价格上升时就买入,在上升到峰值时就卖出。如图所示:

代码实现就是:从第二天开始遍历所有天数,如果比前一天价格高,就加入到最终结果。

#include <iostream>
using namespace std;
const int N =1e5 + 10;
int n;
int p[N];
int main() 
{
    cin >> n;
    for(int i = 0; i < n; i++) cin >> p[i];

    int ret = 0;
    for(int i = 1; i < n; i++)
    {
        if(p[i] > p[i - 1]) ret += p[i] - p[i - 1]; // 拿到所有上升趋势的价格
    }
  
    cout << ret;
    return 0;
}

全部评论

相关推荐

评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务