LeetCode是什么,leetcodetop
假设你有一个数组,数组的元素是给定股票在第一天的价格。
如果你只被允许完成最多一笔交易(即买一股卖一股),设计一个算法找出最大利润。
例如:array[]={ 2,5,3,8,9,4 },maxProfit=9 - 2=7 .
Anwser 1:
类别解决方案{
公共:
int maxProfit(矢量(同Internationalorganizations)国际组织价格){
//开始在下面键入您的C/C解决方案
//不要写int main()函数
if(prices.size()==0)返回0;
int ret=0;
int len=价格size();
int max price=prices[len-1];
for(int I=len-1;我我- ){
maxPrice=max(prices[i],max price);//maxPrice
ret=max(ret,max price-prices[I]);//maxProfit
返回浸水使柔软
};
注意点:
最大利润,应该是先买的最低价与后卖的最高价的差值,因此需要考虑时间先后顺序
Anwser 2:
类别解决方案{
公共:
int maxProfit(矢量(同Internationalorganizations)国际组织价格){
//开始在下面键入您的C/C解决方案
//不要写int main()函数
int maxp=0;
int DP=0;
for(int I=价格。size()-2;I=0;我-)
如果(dp=0){
dp=(价格[i 1]价格【我】);
}否则{
dp=max(0,prices[I 1]-prices[I]);
maxp=max(dp,maxp);
返回最大斑块面积
};
说明:
1) 此法把两数之间最大差,转化为了求两数组之间最大和
2) dp=(价格[i 1]价格[我])实际上是dp=(价格[i 1]价格我)(价格[我]价格[i-1])(价格[i-1]价格[i-2]).=(价格[我]价格[j]) (i j)
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。