题目地址:
https://www.acwing.com/problem/content/1057/
给定一个长度为 N N N的数组,数组中的第 i i i个数字表示一个给定股票在第 i i i天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。
输入格式:
第一行包含整数
N
N
N,表示数组长度。
第二行包含
N
N
N个不大于
10000
10000
10000的正整数,表示完整的数组。
输出格式:
输出一个整数,表示最大利润。
数据范围:
1
≤
N
≤
1
0
5
1≤N≤10^5
1≤N≤105
代码如下:
#include <iostream>
using namespace std;
int n, pre = 1e9;
int main() {
scanf("%d", &n);
int res = 0;
for (int i = 1; i <= n; i++) {
int x;
scanf("%d", &x);
res += max(0, x - pre);
pre = x;
}
printf("%d\n", res);
}
时间复杂度 O ( n ) O(n) O(n),空间 O ( 1 ) O(1) O(1)。