Programers:株価(スタック)
9937 ワード
株価
コード#コード#
[私の答え]
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> solution(vector<int> prices) {
vector<int> answer;
for(int i=0;i<prices.size();i++)
{
int cnt=0;
for(int j=i+1;j<prices.size();j++)
{
if(prices[i] <= prices[j])
cnt++;
else {
cnt ++;
break;
}
}
answer.push_back(cnt);
}
return answer;
}
[私の答え]
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> solution(vector<int> prices) {
vector<int> answer;
for(int i=0;i<prices.size();i++)
{
int cnt=0;
for(int j=i+1;j<prices.size();j++)
{
if(prices[i] <= prices[j])
cnt++;
else {
cnt ++;
break;
}
}
answer.push_back(cnt);
}
return answer;
}
[ベストアンサー]
#include <string>
#include <vector>
#include <stack>
using namespace std;
vector<int> solution(vector<int> prices) {
vector<int> answer(prices.size());
stack<int> s;
for(int i=0;i<prices.size();i++)
{
while(!s.empty() && prices[s.top()] > prices[i])
{
// 감소가 탐지된 인덱스 ~ 해당 값 까지의 차이만큼은 가격이 떨어지지 않음!
answer[s.top()] = i - s.top();
s.pop();
}
s.push(i);
}
// 감소가 탐지되지 않은 인덱스는 전체 인덱스-1 ~ 해당 인덱스 차이까지
while(!s.empty())
{
answer[s.top()] = (prices.size()-1) - s.top();
s.pop();
}
return answer;
}
Reference
この問題について(Programers:株価(スタック)), 我々は、より多くの情報をここで見つけました https://velog.io/@neity16/Programers-주식-가격-stackテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol