以下是我要解决的问题https://www.hackerrank.com/challenges/stockmax的链接。
我的方法:
从索引0到n的遍历。如果第二天的价格超过当天,我会购买股票。如果第二天的价格低于当天的价格,我会以当前价格卖出已经买入的股票。但是,我无法通过测试用例,也不知道为什么我的解决方案是错误的。
这是代码
#include<iostream>
#include<algorithm>
using namespace std;
int a[100005]={0};
int main()
{
int t,n;
long long sum=0;
cin>>t;
while(t--)
{
sum=0;
int cnt=0;
cin>>n;
for(int i=0;i<n;i++)
cin>>a[i];
int i=0;
while(i<n)
{
while(a[i+1]>=a[i]&&(i+1)<n)
{
sum-=a[i];
i++;
cnt++;
}
sum+=(cnt)*a[i];
cnt=0;
i++;
}
printf("%lld\n",max(sum,0));
}
return 0;
}
答案 0 :(得分:1)
不是从索引0到n遍历,而是向后遍历,即n到索引0&amp;应用逻辑来获得销售的最大值。这是一个线性扫描问题