[Jobdu] 제목 1522: min 함 수 를 포함 하 는 스 택
5993 단어 job
스 택 의 데이터 구 조 를 정의 합 니 다. 이 형식 에서 스 택 의 최소 요 소 를 얻 을 수 있 는 min 함 수 를 실현 하 십시오.
입력:
입력 은 여러 개의 테스트 샘플 을 포함 할 수 있 으 며, 입력 은 EOF 로 끝 납 니 다.모든 테스트 사례 에 대해 입력 한 첫 번 째 행 위 는 정수 n (1 < = n < = 1000000) 이 고 n 은 입력 할 작업 의 절차 수 를 대표 합 니 다.다음은 n 줄 이 있 고 줄 마다 알파벳 Ci 가 있 습 니 다.Ci = 's' 시 다음 숫자 k 가 있 습 니 다. 대 표 는 k 를 창고 에 넣 습 니 다.Ci = 'o' 시 스 택 상단 요 소 를 팝 업 합 니 다.
출력:
모든 테스트 사례 의 모든 작업 에 대응 하고 스 택 이 비어 있 지 않 으 면 해당 스 택 의 최소 요 소 를 출력 합 니 다.그렇지 않 으 면 NULL 을 출력 합 니 다.
샘플 입력:
7
s 3
s 4
s 2
s 1
o
o
s 0
샘플 출력:
3
3
2
1
2
3
0
간단 합 니 다. 하나의 스 택 으로 현재 의 최소 값 을 저장 합 니 다. 새 요소 가 현재 의 최소 값 보다 시간 이 적 으 면 min 스 택 에 들 어가 고 스 택 에서 나 올 때 스 택 꼭대기 요소 가 현재 의 최소 값 이 라면 min 스 택 에서 팝 업 됩 니 다.
1 #include <iostream>
2 #include <stack>
3 #include <cstdio>
4 using namespace std;
5
6 int n, a;
7 char ci;
8
9 int main() {
10 //freopen("a.in", "r", stdin);
11 while (cin >> n) {
12 stack<int> s;
13 stack<int> min;
14 while (n--) {
15 cin >> ci;
16 if (ci == 's') {
17 cin >> a;
18 s.push(a);
19 if (min.empty() || a < min.top())
20 min.push(a);
21 } else if (ci == 'o') {
22 if (s.top() == min.top())
23 min.pop();
24 s.pop();
25 }
26 if (min.empty())
27 cout << "NULL" << endl;
28 else
29 cout << min.top() << endl;
30 }
31 }
32 return 0;
33 }
34 /**************************************************************
35 Problem: 1522
36 User: hupo250
37 Language: C++
38 Result: Accepted
39 Time:120 ms
40 Memory:1524 kb
41 ****************************************************************/
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
프로그래머로서 마지막 실수는 무엇입니까?사진 제공: on 모든 신규 이민자는 모든 개발자가 실수를 한다는 것을 들어야 한다고 생각합니다. 그들은 이것에 대해 걱정할 필요가 없지만 가능하면 실수를 수정하고 그로부터 배우십시오. 오늘 마지막 실수부터 시작하겠...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.