解法:数组法
思路:利用数组的方法实现各项操作,需要注意的是,中间增加和中间删除时,需要判读小数和中位数
var FrontMiddleBackQueue = function() {
this.arr = []
};
/**
* @param {number} val
* @return {void}
*/
FrontMiddleBackQueue.prototype.pushFront = function(val) {
this.arr.unshift(val)
};
/**
* @param {number} val
* @return {void}
*/
FrontMiddleBackQueue.prototype.pushMiddle = function(val) {
let len = this.arr.length
let middle = len / 2
if (middle.toString().includes('.')) {
this.arr.splice(Math.floor(middle), 0, val)
} else {
this.arr.splice(middle, 0, val)
}
};
/**
* @param {number} val
* @return {void}
*/
FrontMiddleBackQueue.prototype.pushBack = function(val) {
this.arr.push(val)
};
/**
* @return {number}
*/
FrontMiddleBackQueue.prototype.popFront = function() {
return this.arr.shift() || -1
};
/**
* @return {number}
*/
FrontMiddleBackQueue.prototype.popMiddle = function() {
let len = this.arr.length
if (!len) return -1
let middle = (len + 1) / 2
if (middle.toString().includes('.')) {
return this.arr.splice(Math.floor(middle - 1), 1)
} else {
return this.arr.splice(middle - 1, 1)
}
};
/**
* @return {number}
*/
FrontMiddleBackQueue.prototype.popBack = function() {
return this.arr.pop() || -1
};