LeetCode 155 Min Stack (특수 조작 이 있 는 스 택 실현)
1840 단어 데이터 구조
Example:
MinStack minStack = new MinStack();
minStack.push(-2);
minStack.push(0);
minStack.push(-3);
minStack.getMin(); --> Returns -3.
minStack.pop();
minStack.top(); --> Returns 0.
minStack.getMin(); --> Returns -2.
제목: push, pop, top 및 getMin (스 택 에서 최소 요소 로 돌아 가기) 작업 을 지원 하 는 스 택 을 실현 합 니 다.
문제 풀이 방향: 동적 배열 시 뮬 레이 션 스 택 을 이용 하여 매번 push 작업 을 할 때마다 하나의 구조 체 를 스 택 에 넣 습 니 다. 구조 체 에는 현재 스 택 요소 와 현재 스 택 에 있 는 요소 의 최소 값 을 포함 합 니 다.모든 작품 은 상수 시간 만 필요 하 다.
코드 는 다음 과 같 습 니 다:
typedef struct {
int val;
int min;
} Node;
typedef struct {
Node *arr;
int top;
int size;
} MinStack;
/** initialize your data structure here. */
MinStack *minStackCreate(int maxSize) {
MinStack *mstk = (MinStack *) malloc(sizeof *mstk);
mstk->arr = (Node *) malloc(sizeof(Node) * (maxSize + 1));
mstk->arr[0].min = INT_MAX;
mstk->size = maxSize;
mstk->top = 0;
return mstk;
}
void minStackPush(MinStack *obj, int x) {
obj->arr[++obj->top].val = x;
if (obj->arr[obj->top-1].min > x) obj->arr[obj->top].min = x;
else obj->arr[obj->top].min = obj->arr[obj->top-1].min;
}
void minStackPop(MinStack *obj) {
obj->top--;
}
int minStackTop(MinStack *obj) {
return obj->arr[obj->top].val;
}
int minStackGetMin(MinStack *obj) {
return obj->arr[obj->top].min;
}
void minStackFree(MinStack *obj) {
free(obj->arr);
free(obj);
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.