leetcode-155-最小栈(java|python)


title: leetcode-155-最小栈(java|python)
date: 2019-09-30 13:42:04
categories:

  • leetcode
    tags:
  • leetcode

leetcode-155-最小栈(java|python)

  • 设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。

    push(x) – 将元素 x 推入栈中。
    pop() – 删除栈顶的元素。
    top() – 获取栈顶元素。
    getMin() – 检索栈中的最小元素。
    示例:

    MinStack minStack = new MinStack();
    minStack.push(-2);
    minStack.push(0);
    minStack.push(-3);
    minStack.getMin(); --> 返回 -3.
    minStack.pop();
    minStack.top(); --> 返回 0.
    minStack.getMin(); --> 返回 -2.

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/min-stack
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

  • class MinStack {
        int[] task1;
        int[] task2;
        int top;
        /** initialize your data structure here. */
        public MinStack() {
            task1 = new int[50];
            task2 = new int[50];
            top = 0;
        }
        
        public void push(int x) {
            if(top==task1.length){
                int[] tmp1 = new int[task1.length*2];
                int[] tmp2 = new int[task2.length*2];
                for(int i=0;i<task1.length;i++){
                    tmp1[i] = task1[i];
                    tmp2[i] = task2[i];
                }
                task1 = tmp1;
                task2 = tmp2;
            }
            task1[top]=x;
            if(top==0)
                task2[top] = x;
            else
                task2[top] = x<task2[top-1]?x:task2[top-1];
            top++;
        }
        
        public void pop() {
            if(top>=0)
                top--;
            
        }
        
        public int top() {
            if(top>=0)
                return task1[top-1];
            else
                return -1;
        }
        
        public int getMin() {
            return task2[top-1];
        }
    }
    
    /**
     * 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();
     */
    
  • class MinStack {
        int[] task1;
        /** initialize your data structure here. */
        public MinStack() {
            task1 = new int[0];
        }
        
        public void push(int x) {
            int[] task3 = new int[task1.length+1];
            for(int i=0;i<task1.length;i++){
                task3[i] = task1[i];
            }
            task3[task1.length] = x;
            task1 = task3;
        }
        
        public void pop() {
            int[] task3 = new int[task1.length-1];
            for(int i=0;i<task1.length-1;i++){
                task3[i] = task1[i];
            }
            task1 = task3;
        }
        
        public int top() {
            return task1[task1.length-1];
        }
        
        public int getMin() {
            int[] task3 = new int[task1.length];
            for(int i=0;i<task1.length;i++)
                task3[i] = task1[i];
            Arrays.sort(task3);
            return task3[0];
        }
    }
    
    /**
     * 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();
     */
    

你可能感兴趣的:(java,数据结构,python,python))