股票价格跨度(901)C++
收集某些股票的每日报价,并返回该股票当日价格的跨度。
今天股票价格的跨度被定义为股票价格小于或等于今天价格的最大连续日数(从今天开始往回数,包括今天)。
例如,如果未来7天股票的价格是 100, 80, 60, 70, 60, 75, 85 那么股票跨度将是 [1, 1, 1, 2, 1, 4, 6]。
题目来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/online-stock-span
#include<iostream>
#include<vector>
using namespace std;
int main()
{
int n; char c; int sum1=0; vector<int>x, a;//x存储数,a存储进栈的下标
int maa;
while(scanf("%d",&n))
{
x.push_back(n);
c = getchar();
if (c == '\n')break;
}
x.push_back(INT_MAX);//所有元素最后全部出栈
vector<int> result(size(x),1);
for(int i=0;i<x.size();++i)
{
while (!a.empty()&&x[a.back()]<=x[i])//单减;
{
n = a.back();
a.pop_back();
//此时栈顶为上一个比他大的数字位置;
if(!empty(a))result[n] =n-a.back();
}
a.push_back(i);
}
for (int i = 0; i < result.size()-1; ++i)cout << result[i]<<" ";
return 0;
}