Merge branch 'master' of git.hxr.so:yige/js-practice

This commit is contained in:
yi-ge 2020-05-13 14:40:43 +08:00
commit f391e66174
3 changed files with 66 additions and 0 deletions

View File

@ -286,9 +286,15 @@ LeetCode 与 LintCode 解题记录。此为个人练习仓库,代码中对重
## 栈 ## 栈
- [最大矩阵](src/stack/maximal-rectangle.js) - [最大矩阵](src/stack/maximal-rectangle.js)
- LeetCode 85. 最大矩阵 <https://leetcode-cn.com/problems/maximal-rectangle/> - LeetCode 85. 最大矩阵 <https://leetcode-cn.com/problems/maximal-rectangle/>
- LintCode 510. 最大矩阵 <https://www.lintcode.com/problem/maximal-rectangle/description> - LintCode 510. 最大矩阵 <https://www.lintcode.com/problem/maximal-rectangle/description>
- [最小栈](src/stack/min-stack.js)
- LeetCode 155. 最小栈 <https://leetcode-cn.com/problems/min-stack/>
- LintCode 12. 带最小值操作的栈 <https://www.lintcode.com/problem/min-stack/description>
## 数学 ## 数学
- [阶乘后的零](src/math/factorial-trailing-zeroes.js) - [阶乘后的零](src/math/factorial-trailing-zeroes.js)

47
src/stack/min-stack.js Normal file
View File

@ -0,0 +1,47 @@
/**
* initialize your data structure here.
*/
export const MinStack = function () {
this.stack = []
this.minStack = [Infinity]
}
/**
* @param {number} x
* @return {void}
*/
MinStack.prototype.push = function (x) {
this.stack.push(x)
this.minStack.push(Math.min(this.minStack[this.minStack.length - 1], x))
}
/**
* @return {void}
*/
MinStack.prototype.pop = function () {
this.stack.pop()
this.minStack.pop()
}
/**
* @return {number}
*/
MinStack.prototype.top = function () {
return this.stack[this.stack.length - 1]
}
/**
* @return {number}
*/
MinStack.prototype.getMin = function () {
return this.minStack[this.minStack.length - 1]
}
/**
* Your MinStack object will be instantiated and called as such:
* var obj = new MinStack()
* obj.push(x)
* obj.pop()
* var param_3 = obj.top()
* var param_4 = obj.getMin()
*/

View File

@ -0,0 +1,13 @@
import { MinStack } from '../../src/stack/min-stack'
test('最小栈', () => {
var obj = new MinStack()
obj.push(1)
obj.push(3)
obj.push(2)
obj.pop()
var top = obj.top()
var min = obj.getMin()
expect(top).toBe(3)
expect(min).toBe(1)
})