赞
踩
队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。
力扣933—最近请求次数
题目大意:计算范围为[t -3000,t]的ping个数。
思路:
代码:
var RecentCounter = function() {
this.queue = []
};
/**
* @param {number} t
* @return {number}
*/
RecentCounter.prototype.ping = function(t) {
this.queue.push(t)
while(this.queue[0] < t - 3000){
this.queue.shift()
}
return this.queue.length
};
力扣225—用队列实现栈
题目大意:使用两个队列,实现栈的先进后出。
思路:
var MyStack = function() { this.queue1 = [] this.queue2 = [] }; /** * @param {number} x * @return {void} */ MyStack.prototype.push = function(x) { this.queue1.push(x) }; /** * @return {number} */ MyStack.prototype.pop = function() { if(this.queue1.length === 0){ [this.queue1,this.queue2] = [this.queue2,this.queue1]; } let len = this.queue1.length while(len > 1){ this.queue2.push(this.queue1.shift()) len-- } return this.queue1.shift() }; /** * @return {number} */ MyStack.prototype.top = function() { let x = this.pop() this.queue1.push(x) return x }; /** * @return {boolean} */ MyStack.prototype.empty = function() { return this.queue1.length === 0 && this.queue2.length === 0 };
题目大意:使用两个栈实现队列的先进先出。
思路:
var MyQueue = function() { this.stack1 = [] this.stack2 = [] }; /** * @param {number} x * @return {void} */ MyQueue.prototype.push = function(x) { this.stack1.push(x) }; /** * @return {number} */ MyQueue.prototype.pop = function() { let len = this.stack2.length if(len){ return this.stack2.pop() } let len1 = this.stack1.length while(len1--){ this.stack2.push(this.stack1.pop()) } return this.stack2.pop() }; /** * @return {number} */ MyQueue.prototype.peek = function() { let x = this.pop() this.stack2.push(x) return x }; /** * @return {boolean} */ MyQueue.prototype.empty = function() { return !this.stack1.length && !this.stack2.length };
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。