贪心题:股票买卖 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;
}
目录
相关文章
|
4月前
|
人工智能 算法 NoSQL
贪心算法 - 常见的问题总结(一)
贪心算法 - 常见的问题总结(一)
|
4月前
|
人工智能 Kubernetes 算法
贪心算法 - 常见的问题总结(二)
贪心算法 - 常见的问题总结(二)
|
4月前
|
机器学习/深度学习 Kubernetes 算法
贪心算法 - 常见的问题总结(三)
贪心算法 - 常见的问题总结(三)
|
7月前
|
算法 Java 调度
贪心算法详解
贪心算法详解
60 0
|
9月前
|
算法
【贪心算法】删数问题
【贪心算法】删数问题
43 0
|
11月前
|
机器学习/深度学习 算法 C++
简单的贪心
简单的贪心
36 0
贪心
AcWing 134. 双端队列
87 0
|
算法 C++
Huffman树(贪心)
复习acwing算法基础课的内容,本篇为讲解基础算法:贪心——Huffman树,关于时间复杂度:目前博主不太会计算,先鸽了,日后一定补上。
61 0
Huffman树(贪心)
|
算法
推公式(贪心)
复习acwing算法基础课的内容,本篇为讲解基础算法:贪心——推公式,关于时间复杂度:目前博主不太会计算,先鸽了,日后一定补上。
74 0
推公式(贪心)