관리 메뉴

FU11M00N

[LeetCode] Min Stack - Javascript 본문

알고리즘

[LeetCode] Min Stack - Javascript

호IT 2023. 8. 30. 23:49

Min Stack

[스택 push(), pop(), top(), getMin() 구현하기]

 

 

제약 조건 

nums1.length == m + n

nums2.length == n

0 <= m, n <= 200

1 <= m + n <= 200

-109 <= nums1[i], nums2[j] <= 109

 

Example

문제 접근 방식

문제 자체가 어렵다기보단 문제를 이해하고 어떻게 답을 리턴하는지에 대해 알아내는 데 오래 걸렸다.
또한 프로토타입에 대한 내용을 까먹어서 다시 복습도 할 겸 코딩 애플의 프로토타입 문법 영상을 한번 보고 풀었다.

스택은 배열로 초기화 했다.

우선 MinStack 객체에선 스택이 될 배열 arr을 초기화했다.
push 프로토타입: arr.push(val)로 push 기능을 구현했다.
pop 프로토타입: arr.pop(val)로 pop 기능을 구현했다.
top 프로토타입: arr 길이에 1을 감소 한 값을 리턴하고,
getmin 프로토타입: arr 배열의 최솟값을 찾아 리턴했다.

전체코드

var MinStack = function() {
    this.arr = []

};
/** 
 * @param {number} val
 * @return {void}
 */
MinStack.prototype.push = function(val) {
    this.arr.push(val)

};
/**
 * @return {void}
 */
MinStack.prototype.pop = function() {
    this.arr.pop()
};

/**
 * @return {number}
 */
MinStack.prototype.top = function() {
    return this.arr[this.arr.length-1]
};

/**
 * @return {number}
 */
MinStack.prototype.getMin = function() {
    min = Math.min.apply(null, this.arr);
    return min
};

/** 
 * Your MinStack object will be instantiated and called as such:
 * var obj = new MinStack()
 * obj.push(val)
 * obj.pop()
 * var param_3 = obj.top()
 * var param_4 = obj.getMin()
 */

 

 

다른 sovle 코드

var MinStack = function() {
    this.stack=[];
};

/** 
 * @param {number} val
 * @return {void}
 */
MinStack.prototype.push = function(val) {
    this.stack.push({
        value: val,
        min : this.stack.length ? Math.min(val,this.getMin()) : val
    })
};

/**
 * @return {void}
 */
MinStack.prototype.pop = function() {
    return this.stack.pop();
};

/**
 * @return {number}
 */
MinStack.prototype.top = function() {
    return this.stack[this.stack.length-1].value;
};

/**
 * @return {number}
 */
MinStack.prototype.getMin = function() {
    return this.stack[this.stack.length-1].min;
};

/** 
 * Your MinStack object will be instantiated and called as such:
 * var obj = new MinStack()
 * obj.push(val)
 * obj.pop()
 * var param_3 = obj.top()
 * var param_4 = obj.getMin()
 */

getMin을 구현하는 방법이 나와 달랐다.
위의 코드는 push를 할 때 객체를 하나 생성해 value와 min 키를 생성하고 값을 넣는다.
min을 math.min을 사용해 최솟값을 넣고 getmin 프로토 타입에선 min 값을 가져오기에 최솟값을 구할 수 있었다.

Comments