최용기 (최대 대기 열, 최소 스 택) 템 플 릿
사실 관건 은:
가장 작은 창고
push, pop, top 작업 을 지원 하고 상수 시간 내 에 최소 요 소 를 검색 할 수 있 는 스 택 을 설계 합 니 다.
push (x) – 원소 x 를 창고 에 밀어 넣 습 니 다.pop () – 스 택 상단 의 요 소 를 삭제 합 니 다.top () – 스 택 상단 요 소 를 가 져 옵 니 다.getMin () - 검색 창고 의 최소 요소 입 니 다.
예시:
MinStack minStack = new MinStack();
minStack.push(-2);
minStack.push(0);
minStack.push(-3);
minStack.getMin(); --> -3.
minStack.pop();
minStack.top(); --> 0.
minStack.getMin(); --> -2.
출처: 스냅 백 (LeetCode) 링크:https://leetcode-cn.com/problems/min-stack 저작권 은 인터넷 에 귀속 된다.상업 전 재 는 정부 에 연락 하여 권한 을 부여 해 주 십시오. 비 상업 전 재 는 출처 를 밝 혀 주 십시오.
class MinStack {
public:
/** initialize your data structure here. */
deque<int> s; //
deque<int> mins; //
MinStack() {
}
void push(int x) {
s.push_back(x);
// , = ,
if(mins.empty() || mins.back()>=x) mins.push_back(x);
}
void pop() {
// , pop ,
if(mins.back()==s.back()) mins.pop_back();
s.pop_back();
}
int top() {
return s.back();
}
int getMin() {
return mins.back();
}
};
/**
* Your MinStack object will be instantiated and called as such:
* MinStack* obj = new MinStack();
* obj->push(x);
* obj->pop();
* int param_3 = obj->top();
* int param_4 = obj->getMin();
*/
면접 문제 59 - II. 대열 의 최대 치
하나의 대기 열 을 정의 하고 함수 max 를 실현 하 십시오.value 대기 열 에서 최대 값 을 얻 습 니 다. 함수 max 요구value、push_back 과 popfront 의 시간 복잡 도 는 모두 O (1) 이다.
대기 열 이 비어 있 으 면, popfront 와 maxvalue 되 돌려 줘 야 돼 - 1
예제 1: 입력: ["MaxQueue", "push back", "push back", "max value", "pop front", "max value"] [[], [1], [2], [], [], [], []] 출력: [null, null, null, 2, 1, 2]
예제 2: 입력: ["MaxQueue", "pop front", "max value"] [[], [], []] 출력: [null, - 1, - 1]
제한: 1 < = pushback,pop_front,max_value 의 총 조작 수 < = 10000 1 < = value < = 10 ^ 5
[제목 전송 문]
출처: 스냅 백 (LeetCode) 링크:https://leetcode-cn.com/problems/dui-lie-de-zui-da-zhi-lcof 저작권 은 인터넷 에 귀속 된다.상업 전 재 는 정부 에 연락 하여 권한 을 부여 해 주 십시오. 비 상업 전 재 는 출처 를 밝 혀 주 십시오.
class MaxQueue {
public:
deque<int> q;
deque<int> maxq;
MaxQueue() {
}
int max_value() {
if(maxq.empty()) return -1;
return maxq.front();
}
void push_back(int value) {
q.push_back(value);
// : ,
while(!maxq.empty() && maxq.back()<=value) maxq.pop_back();
maxq.push_back(value);
}
int pop_front() {
if(q.empty()) return -1;
int f=q.front(); q.pop_front();
// : ,
if(maxq.front()==f) maxq.pop_front();
return f;
}
};
/**
* Your MaxQueue object will be instantiated and called as such:
* MaxQueue* obj = new MaxQueue();
* int param_1 = obj->max_value();
* obj->push_back(value);
* int param_3 = obj->pop_front();
*/
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.