`
chriszeng87
  • 浏览: 741248 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

LeetCode – Min Stack

 
阅读更多

转自:http://www.programcreek.com/2014/02/leetcode-min-stack-java/

Design a stack that supports push, pop, top, and retrieving the minimum element in constant time.

push(x) -- Push element x onto stack.
pop() -- Removes the element on top of the stack.
top() -- Get the top element.
getMin() -- Retrieve the minimum element in the stack.

Thoughts

An array is a perfect fit for this problem. We can use a integer to track the top of the stack. You can use the Stack class from Java SDK, but I think a simple array is more efficient and more beautiful.

Java Solution

class MinStack {
    private int[] arr = new int[100];
    private int index = -1;
 
    public void push(int x) {
        if(index == arr.length - 1){
            arr = Arrays.copyOf(arr, arr.length*2);
        }
        arr[++index] = x;
    }
 
    public void pop() {
        if(index>-1){
            if(index == arr.length/2 && arr.length > 100){
                arr = Arrays.copyOf(arr, arr.length/2);
            }
            index--;
        }
    }
 
    public int top() {
        if(index > -1){
            return arr[index];
        }else{
            return 0;
        }
    }
 
    public int getMin() {
        int min = Integer.MAX_VALUE;
        for(int i=0; i<=index; i++){
            if(arr[i] < min)
                min = arr[i];
        }
        return min;
    }
}
分享到:
评论

相关推荐

    java-leetcode面试题解Stack之第155题最小栈-题解.zip

    如果`minStack`为空或x小于`minStack`的栈顶元素,那么`x`也应成为`minStack`的栈顶元素。 3. 执行`pop()`时,两个栈都弹出顶部元素。 4. `top()`操作只需返回`mainStack`的栈顶元素。 5. `getMin()`操作则直接返回`...

    java-leetcode题解之155-Min-Stack

    java入门 java_leetcode题解之155_Min_Stack

    python-leetcode题解之155-Min-Stack.py

    python python_leetcode题解之155_Min_Stack.py

    leetcode包含min函数的栈,python全网时间内存最小解法 代码+思路

    MinStack minStack = new MinStack(); minStack.push(-2); minStack.push(0); minStack.push(-3); minStack.min(); --&gt; 返回 -3. minStack.pop(); minStack.top(); --&gt; 返回 0. minStack.min(); --&gt; 返回 -...

    js-leetcode题解之155-min-stack.js

    javascript js_leetcode题解之155-min-stack.js

    php-leetcode题解之最小栈.zip

    if (empty($this-&gt;minStack) || $x ($this-&gt;minStack)) { $this-&gt;minStack[] = $x; } } // 出栈操作 public function pop() { if (!empty($this-&gt;stack)) { if (end($this-&gt;stack) === end($this-&gt;minStack...

    leetcode分类-Leetcode:Leetcode题解

    leetcode 分类 Leetcode代码题解 随缘刷题,选择性更新题解 LeetCode 94 144 145 二叉树的前中后序遍历: Leetcode ...longest-consecutive-sequence ...Min Stack 最小栈: LeetCode 773 滑动谜题: ......

    java面试-leetcode面试题解之第155题最小栈-题解.zip

    if (minStack.isEmpty() || x &lt;= minStack.peek()) { minStack.push(x); } } public void pop() { if (mainStack.pop().equals(minStack.peek())) { minStack.pop(); } } public int top() { return ...

    LeetCode最全代码

    * [Stack](https://github.com/kamyu104/LeetCode#stack) * [Queue](https://github.com/kamyu104/LeetCode#queue) * [Heap](https://github.com/kamyu104/LeetCode#heap) * [Tree]...

    Leetcode book刷题必备

    39. Min Stack:设计一个栈,支持 push、pop、top 操作,并且在常数时间内得到栈的最小值。 40. Evaluate Reverse Polish Notation:计算后缀表达式。 41. Valid Parentheses:验证括号的有效性。 【动态规划】 42....

    leetcode题库-JavaScript-or-TypeScript-for-LeetCode:使用JavaScript或TypeScrip

    leetcode题库 JavaScript / TypeScript for LeetCode 谨以此仓库记录LeetCode刷题历程【2020.6.27 -&gt; undefined】 使用JavaScript、TypeScript语言解决数据结构和算法问题 锻炼编程能力,培养算法思维,相互学习,...

    leetcode-structure:leetcode网站翻译解析,Java各种源码分析

    设计包含最小函数min(),取出元素函数pop(),加入元素函数push()的栈MinStack,实现其中指定的方法(2)。 MinStack中数据存储使用Java原生的Stack,存储数据元素为int。请实现以下对应的方法,完善功能。 ...

    javalruleetcode-LeetCode:LeetCode问题解决方案

    在任何给定的时间点,minStack 将保持最小元素直到现在(推送或弹出值) 满足条件的线性搜索或二分搜索,因为解决方案始终存在 由于其他方法为大输入提供 TLE,因此筛选埃托色尼 按位解决方案,因为二的幂只包含 1 ...

    leetcode316-Every_day_leetcode:Every_day_leetcode

    155.Min Stack 设置一个辅助栈专门用于放置当前最小的值,每次压栈时主栈压入新数据,辅助栈压入当前最小数据 316.Remove 重要 单调栈的问题,栈内元素大致递增,记录下串内字符的数量。有四题大致相同,总结一下...

    Amazon亚麻 最新leetcode tag题

    7. **高级数据结构**:题目如“MergekSortedLists”、“InsertDeleteGetRandomO(1)”、“MinStack”和“AddTwoNumbers”需要应聘者熟悉高级数据结构的实现,例如最小栈和随机访问列表。 8. **面试准备策略**:在...

    看leetcode吃力-my-learning-note:大三下学期之资料结构与演算法课程内容与练习

    Min Stack 完成LeetCode 232. Implement Queue using Stacks Week5 完成LeetCode 147. Insertion Sort List 完成作业Quick sort Week6 10/11 国庆弹性放假 Week7 完成作业Heap sort Week8 完成作业Merge sort Week9 ...

    leetcode跳跃-algorithm:leetcode

    minStack stack 111 二叉树的最小深度 , tree 110 平衡二叉树 tree 104 二叉树的最大深度 tree 100 相同的树 tree 94 二叉树的中序遍历 tree 70 爬楼梯 dp 53 最大子序和 dp 26 删除排序数组中的重复项 array 1 两数...

    leetcode java

    - 最小栈(Min Stack)要求设计一个栈,在该栈中寻找最小值的时间复杂度为O(1)。 - 逆波兰表达式求值(Evaluate Reverse Polish Notation)则是关于后缀表达式的计算。 **动态规划(Dynamic Programming)** 动态...

    包含min函数的栈1

    描述中提到的代码实现了一个名为MinStack的类,该类有两个栈,一个叫做`normal`用于存储常规的元素,另一个叫做`minval`用于辅助维护当前栈内的最小值。当向栈中push一个新元素时,会先将其推入`normal`栈。如果`...

    leetcode题库-Leetcode-Summary:Leetcode刷题总结(Java版)——更新中

      包含min函数的栈(The_stack_containing_the_min_function.java)   队列的最大值(The_maximum_value_of_the_queue.java) 堆(heap_items)   最小的k个数(The_smallest_k_number.java) 位运算(bit_...

Global site tag (gtag.js) - Google Analytics