https://leetcode.com/problems/online-stock-span/description/
题目大意:依次给你n天的股票价格,问到当前天价格前连续多少天的价格都是低于这个价格的。
解题思路:标准解法采用栈的形式解决,我的做法类似栈,但是需要消耗多的空间不太好。dp[i] 记录第i天的结果,如果当前天的价格大于等于第i天则,dp[x] += dp[i] ,且可以往前推 dp[i] 天 ,接着判断即可。
class StockSpanner {
public:
vector<int> v;
int dp[100005];
StockSpanner() {
v.clear();
memset(dp,0,sizeof(dp));
}
int next(int price) {
v.push_back(price);
int n=v.size();
if(n==1)
{
dp[n-1] = 1;
return 1;
}
int tmp = n-2;
while(price>=v[tmp])
{
dp[n-1] += dp[tmp];
tmp-= dp[tmp];
if(tmp<0) break;
}
dp[n-1]+=1;
return dp[n-1];
}
};