최소 기능을 포함하는 스택 AcWing

최소 기능을 포함하는 스택 AcWing

기술

  • 지지 푸쉬하기위한 팝, 상부 및 다른 작업은 O (1) 시간에서의 작은 스택 엘리먼트를 검색 할 수있다.
    • (x)는 푸시 - 스택은 원소 X에 삽입
    • ) (팝업 - 최상위 요소를 제거
    • 상단 () - 상단의 요소의 취득
    • getMin은 () - 스택에 최소의 요소를 얻을 수

기타 :

  • 이 질문은 매우 독특한 샘플 입력과 출력을하다(이상한)차례로 링크를

해결 방법 :

  • 스택입니다.
  • 우선, 처음 세 정상 작동 스택이다. 함께 데이터 구조에 기억 : 제 4 개 개의 조작이 약간 발견 고려를 할 수있는 후 각각의 시간의 과거 스택이 후에 수행 될 수 있도록 최소한 의 감소 .
  • 그래서 약간 스택을 선택합니다. 특정 스택은 새로운 기록 최소마다 시간을 열 수 있습니다. 원래 스택 직접 새로 적층 맥스 (새로운 스택 최상부 요소)을 삽입 삽입 요소 삽입. 새로운 팝업 상단 원래 스택 팝업 스택 할 수 있습니다합니다.
  • O의 복잡성 (1), 아주 좋아.
//这题题目给了一个类似封装的东西,你只需要往相应的地方填代码就好了。在C++编译不过没关系
class MinStack {
public:
    /** initialize your data structure here. */
    stack<int> stk1, stk2;
    MinStack() {
        
    }
    
    void push(int x) {
        stk1.push(x);
        if(!stk2.size()) stk2.push(x);
        else stk2.push(min(x, stk2.top()));
    }
    
    void pop() {
        stk1.pop(), stk2.pop();
    }
    
    int top() {
        return stk1.top();
    }
    
    int getMin() {
        return stk2.top();
    }
};

/**
 * 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();
 */

추천

출처www.cnblogs.com/BigYellowDog/p/11300680.html