队列

74 阅读1分钟

什么是队列

与栈相反,先进先出

实现

function Queue() {
  const arr = [];
  this.push = function (item) {
    arr.push(item);
  };

  this.shift = function(){
    return arr.shift()
  }
}

例题

求区间为3000内的元素数量
3001 -〉[1,3001]
3002 -〉[2,3002]
function fn1(nums){
    let arr = []
    let count = []
    for(let i = 0;i < nums.length;i++){
        if(nums[i] == 0){
            count.push(null)
            continue;
        }
        if(nums[i] <= 3000){
            arr.push(nums[i])
            count.push(arr.length)
        }else{
            arr.push(nums[i])
            let left = nums[i]-3000
            // for(let j = 0;j<=arr.length;j++){
            //     if(arr[j] < left){
            //         arr.shift()
            //     }
            // }
            while(arr[0] < left){
                arr.shift()
            }
           count.push(arr.length)
        }

    }
    return count
}
console.log(fn1([0,1,100,3001,3002]));