贪心题:股票买卖 II

简介: 贪心题:股票买卖 II

给定一个长度为 N 的数组,数组中的第 i 个数字表示一个给定股票在第 i 天的价格。

设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。

注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。


输入格式

第一行包含整数 N,表示数组长度。

第二行包含 N个不大于 10000 的正整数,表示完整的数组。


输出格式

输出一个整数,表示最大利润。

数据范围

1≤N≤10^5


输入样例1:

6
7 1 5 3 6 4

输出样例1:

7

输入样例2:

5
1 2 3 4 5

输出样例2:

4


输入样例3:

5
7 6 4 3 1

输出样例3:

0


样例解释

样例1:在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6-3 = 3 。共得利润 4+3 = 7。


样例2:在第 1 天(股票价格 = 1)的时候买入,在第 5 天 (股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。注意你不能在第 1 天和第 2 天接连购买股票,之后再将它们卖出。因为这样属于同时参与了多笔交易,你必须在再次购买前出售掉之前的股票。


样例3:在这种情况下, 不进行任何交易, 所以最大利润为 0。

难度:简单

时/空限制:1s / 64MB

来源:《算法竞赛进阶指南》, LeetCode

算法标签

贪心DP线性DP状态机

#include<iostream>
using namespace std;
int main()
{
    int n, price[100010];
    cin >> n;
    for (int i = 1; i <= n; i++)
    {
        cin >> price[i];
    }
    int res = 0;
    for (int i = 1; i < n; i++)
    {
        if (price[i + 1] > price[i])
        {
            res += price[i + 1] - price[i];
        }
    }
    cout << res << endl;
    return 0;
}
目录
相关文章
|
9月前
|
存储 算法 Java
贪心算法和动态规划
贪心算法和动态规划
109 0
|
移动开发 算法 调度
【贪心算法】一文让你学会“贪心”(贪心算法详解及经典案例)
贪心算法是一种非常常见的算法,它的简单和高效性使其在实际应用中被广泛使用。 贪心算法的核心思想是在每一步都采取当前状态下最优的选择,而不考虑未来可能产生的影响。虽然贪心算法不能保证总是得到最优解,但在很多情况下,它可以获得很好的结果。 本篇文章将介绍贪心算法的基本概念和一些经典应用,以及如何通过贪心算法来解决一些实际问题。希望通过本文的阅读,读者可以对贪心算法有更加深刻的理解,并能够在实际问题中应用贪心算法来得到更好的解决方案。 让我们暴打贪心算法吧!
3949 0
|
4月前
|
人工智能 算法 安全
详解贪心算法
详解贪心算法
|
9月前
|
人工智能 Kubernetes 算法
贪心算法 - 常见的问题总结(二)
贪心算法 - 常见的问题总结(二)
|
算法
【贪心算法】删数问题
【贪心算法】删数问题
86 0
|
算法
【贪心算法】初步介绍
【贪心算法】初步介绍
93 0
|
算法 调度
贪心算法小解
贪心算法小解
79 0
|
算法
修理牧场( 哈夫曼算法 ,贪心 )
修理牧场( 哈夫曼算法 ,贪心 )
218 0
|
机器学习/深度学习 算法 C++
简单的贪心
简单的贪心
71 0