给定一个数组 prices
,它的第 i
个元素 prices[i]
表示一支给定股票第 i
天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0
。
1.letcode界面代码
class Solution {
public:
int maxProfit(vector<int>& prices) {
int num = INT_MAX;
int res = 0;
for (int i = 0; i < prices.size(); i++) {
num = min(num, prices[i]);
res = max(res, prices[i] - num);
}
return res;
}
};
2. 扩展:自己产生价格的随机数组容器,再进行利润计算,
#include <iostream>
#include <vector>
#include <ctime>
#include <cmath>
#include <algorithm> //算法头文件
using namespace std;
//实现一个返回最大利润的函数
int caculator(vector<int> &v) {
int length = v.size();
int num = INT_MAX;//代表无限大的数,宏定义
int res = 0;
for (int i = 0; i < length; i++) {
num = min(num,v[i]);
res = max(res, v[i] - num);
}
return res;
}
int main(){
//----随机产生10个100以内的数代表股票的价格,并装入容器vector----//
srand((uint32_t)(time(NULL)));
vector<int> prices;
for (int i = 0; i < 10; i++) {
prices.push_back(rand() % 100 + 1);
}
//----打印出容器内的随机数,方便验证结果-----//
for (int i = 0; i < prices.size(); i++) {
cout << prices[i] << " ";
}
cout << endl;
int ret = caculator(v);
cout << ret << endl;
return 0;
}