[알고리즘 학습] 창고 의 최소 값

2377 단어 알고리즘창고.
문제 설명: 스 택 의 pop, push, min (스 택 의 최소 값 을 얻 는) 방법 을 실현 합 니 다.
해법 과 분석: 1. 매번 창고 에 쌓 이 고 창고 에 나 갈 때마다 창고 의 최소 값 을 바 꿀 수 있 기 때문에 우 리 는 최소 값 을 저장 하 는 창 고 를 추가 합 니 다.2. 스 택 에서 작업 할 때 최소 값 의 스 택 도 스 택 에서 나 옵 니 다.(물론 스 택 이 비어 있 는 지 판단 해 야 합 니 다) 3. 스 택 작업 을 할 때 스 택 요소 값 과 가장 작은 스 택 의 스 택 요소 의 크기 를 비교 하고 비교적 작 으 면 스 택 에 넣 습 니 다. 그렇지 않 으 면 가장 작은 스 택 의 스 택 요 소 를 중복 적 으로 스 택 에 넣 습 니 다.(물론 스 택 이 비어 있 는 지 판단 해 야 합 니 다)
참조 코드 는 다음 과 같 습 니 다.
    private Stack<Integer> dataStack = new Stack<Integer>();
    private Stack<Integer> minStack = new Stack<Integer>();

    /** *    * @return */
    public int pop()
    {
        if (minStack.isEmpty() && dataStack.isEmpty())
        {
            throw new EmptyStackException();
        }
        minStack.pop();
        return dataStack.pop();
    }

    /** *    * @param item */
    public void push(int item)
    {
        dataStack.push(item);
        if(minStack.isEmpty()||item<minStack.peek())
        {
            minStack.push(item);
        }
        else
        {
            minStack.push(minStack.peek());
        }
    }

    /** *      * @return */
    public int min()
    {
        if(minStack.isEmpty())
        {
            throw new EmptyStackException();
        }
        return minStack.peek();
    }
  • 첨부: 원본 주소
  • 좋은 웹페이지 즐겨찾기