[검 지 offer] min 함 수 를 포함 하 는 창고 (최소 창고)
1378 단어 검지 제공
스 택 의 데이터 구 조 를 정의 합 니 다. 이 형식 에서 스 택 에 포 함 된 최소 요 소 를 얻 을 수 있 는 min 함수 (시간 복잡 도 는 O (1) 를 실현 하 십시오.
메모: 테스트 중 스 택 이 비어 있 을 때 스 택 에 pop () 또는 min () 또는 top () 방법 을 호출 하지 않도록 합 니 다.
생각:
스 택 2 개 사용 하기
창고 스 택 push 모든 값 (한 값 이면 push 들 어가 기) 다른 창고 stacklittle push 비 원 stacklittle 창고 꼭대기 원소 작은 값
스 택 때문에. pop 이후 최소 값 이 변 할 수 있 습 니 다.
stack pop 의 요소 와 스 택 stacklittle 스 택 상단 요 소 는 이 스 택 의 최소 값 에 영향 을 주지 않 습 니 다. 그래서 pop 원래 스 택 지붕 의 값 만 스 택 의 최소 값 에 영향 을 주지 않 습 니 다.
그러나. stack 창고 꼭대기 원소 와 stacklittle 스 택 꼭대기 요소 가 같 을 때 두 스 택 은 동시에 pop 이 필요 합 니 다. 그렇지 않 으 면 스 택 의 최소 값 이 맞지 않 습 니 다. min () 함수 가 스 택 꼭대기 요 소 를 되 돌려 주기 때 문 입 니 다.
코드:
class Solution {
private:
stack _stack;
stack _stack_little;
public:
void push(int value) {
if (_stack.empty()) {
_stack.push(value);
}
if (_stack_little.empty()) {
_stack_little.push(value);
}
else if (value <= _stack_little.top()) {
_stack_little.push(value);
}
_stack.push(value);
}
void pop() {
if (_stack.empty()) {
return;
}
if (_stack.top() == _stack_little.top()) {
_stack.pop();
_stack_little.pop();
}
else {
_stack.pop();
}
}
int top() {
if (!_stack.empty()) {
return _stack.top();
}
}
int min() {
if (!_stack_little.empty()) {
return _stack_little.top();
}
}
};
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
\ # 데이터 구조 와 알고리즘 학습 노트 \ # 검 지 제공 42: 단어 순 서 를 뒤 집기 + 테스트 사례 (자바, C / C +)2019.1.2 검 지 Offer 는 제로 브러시 개인 노트 정리 (66 문제 전) 디 렉 터 리 전송 문 에서 인터넷 에 서 는 원 서 를 포함 한 많은 방법 이 문장 을 두 번 뒤 집 는 것 이다. 첫 번...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.