转自: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; } } |
相关推荐
如果`minStack`为空或x小于`minStack`的栈顶元素,那么`x`也应成为`minStack`的栈顶元素。 3. 执行`pop()`时,两个栈都弹出顶部元素。 4. `top()`操作只需返回`mainStack`的栈顶元素。 5. `getMin()`操作则直接返回`...
java入门 java_leetcode题解之155_Min_Stack
python python_leetcode题解之155_Min_Stack.py
MinStack minStack = new MinStack(); minStack.push(-2); minStack.push(0); minStack.push(-3); minStack.min(); --> 返回 -3. minStack.pop(); minStack.top(); --> 返回 0. minStack.min(); --> 返回 -...
javascript js_leetcode题解之155-min-stack.js
if (empty($this->minStack) || $x ($this->minStack)) { $this->minStack[] = $x; } } // 出栈操作 public function pop() { if (!empty($this->stack)) { if (end($this->stack) === end($this->minStack...
leetcode 分类 Leetcode代码题解 随缘刷题,选择性更新题解 LeetCode 94 144 145 二叉树的前中后序遍历: Leetcode ...longest-consecutive-sequence ...Min Stack 最小栈: LeetCode 773 滑动谜题: ......
if (minStack.isEmpty() || x <= minStack.peek()) { minStack.push(x); } } public void pop() { if (mainStack.pop().equals(minStack.peek())) { minStack.pop(); } } public int top() { return ...
* [Stack](https://github.com/kamyu104/LeetCode#stack) * [Queue](https://github.com/kamyu104/LeetCode#queue) * [Heap](https://github.com/kamyu104/LeetCode#heap) * [Tree]...
39. Min Stack:设计一个栈,支持 push、pop、top 操作,并且在常数时间内得到栈的最小值。 40. Evaluate Reverse Polish Notation:计算后缀表达式。 41. Valid Parentheses:验证括号的有效性。 【动态规划】 42....
leetcode题库 JavaScript / TypeScript for LeetCode 谨以此仓库记录LeetCode刷题历程【2020.6.27 -> undefined】 使用JavaScript、TypeScript语言解决数据结构和算法问题 锻炼编程能力,培养算法思维,相互学习,...
设计包含最小函数min(),取出元素函数pop(),加入元素函数push()的栈MinStack,实现其中指定的方法(2)。 MinStack中数据存储使用Java原生的Stack,存储数据元素为int。请实现以下对应的方法,完善功能。 ...
在任何给定的时间点,minStack 将保持最小元素直到现在(推送或弹出值) 满足条件的线性搜索或二分搜索,因为解决方案始终存在 由于其他方法为大输入提供 TLE,因此筛选埃托色尼 按位解决方案,因为二的幂只包含 1 ...
155.Min Stack 设置一个辅助栈专门用于放置当前最小的值,每次压栈时主栈压入新数据,辅助栈压入当前最小数据 316.Remove 重要 单调栈的问题,栈内元素大致递增,记录下串内字符的数量。有四题大致相同,总结一下...
7. **高级数据结构**:题目如“MergekSortedLists”、“InsertDeleteGetRandomO(1)”、“MinStack”和“AddTwoNumbers”需要应聘者熟悉高级数据结构的实现,例如最小栈和随机访问列表。 8. **面试准备策略**:在...
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 ...
minStack stack 111 二叉树的最小深度 , tree 110 平衡二叉树 tree 104 二叉树的最大深度 tree 100 相同的树 tree 94 二叉树的中序遍历 tree 70 爬楼梯 dp 53 最大子序和 dp 26 删除排序数组中的重复项 array 1 两数...
- 最小栈(Min Stack)要求设计一个栈,在该栈中寻找最小值的时间复杂度为O(1)。 - 逆波兰表达式求值(Evaluate Reverse Polish Notation)则是关于后缀表达式的计算。 **动态规划(Dynamic Programming)** 动态...
描述中提到的代码实现了一个名为MinStack的类,该类有两个栈,一个叫做`normal`用于存储常规的元素,另一个叫做`minval`用于辅助维护当前栈内的最小值。当向栈中push一个新元素时,会先将其推入`normal`栈。如果`...
包含min函数的栈(The_stack_containing_the_min_function.java) 队列的最大值(The_maximum_value_of_the_queue.java) 堆(heap_items) 最小的k个数(The_smallest_k_number.java) 位运算(bit_...