zoukankan      html  css  js  c++  java
  • 队列queue 先进先出

    队列queue 先进先出
    队列只能在尾部添加元素(入队),在头部删除元素(出队)
    类比:排队

    队列实现

    class Queue {
      constructor() {
        this.items = []
      }
      // 入队 从对尾添加元素
      enqueue(item) {
        this.items.push(item)
      }
      // 出队 从队列头部删除第一个元素
      dequeqe() {
        return this.items.shift()
      }
      // 返回队列头部的元素
      head() {
        return this.items[0]
      }
      // 返回队列尾部的元素
      tail() {
        return this.items[this.items.length - 1]
      }
      size() {
        return this.items.length
      }
      isEmpty() {
        return this.items.length === 0
      }
      //  清空队列
      clear() {
        this.items.length = 0
      }
    
    }
    View Code

    队列题目

    // 有一个数组存放0-99数字,要求每隔2个数字删除一个数(每3个删除一个),到末尾时循环至开头继续进行,求最后一个被删除的数字
    // 0  1 2 3 4 5 6 7 8 9 10 每隔2个数字删除一个数字,也就是把2 5 8 删除了

    function delRing() {
      const queue = new Queue()
      for (let i = 0; i < 100; i++) {
        queue.enqueue(i) //0-99数字入队操作
      }
      let index = 0
      while (queue.size() !== 1) {
        let item = queue.dequeue() //首先逐一出队
        index++ //记录每次删除头部元素(这个动作) index+1
        if (index % 3 !== 0) {
          queue.enqueue(item) //把不要删除的数字入队
        }
    
      }
      return queue.head()
    
    }
    View Code

    //斐波那契数列  F(1)=0,F(2)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 3,n ∈ N*)

    //斐波那契数列  F(1)=0,F(2)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 3,n ∈ N*)
    
    function fibonacci(n) {
      const queue = new Queue()
      queue.enqueue(0)
      queue.enqueue(1)
      let index = 0
      // 重复执行删一个 加一个的动作
      while (index < n - 2) {
        let del_head = queue.dequeue() //头部删除
        let head = queue.head()
        let next_item = del_head + head
        queue.enqueue(next_item) //尾部添加
        index++
      }
      return queue.tail()
    }
    View Code
  • 相关阅读:
    RecyclerView 数据刷新的几种方式 局部刷新 notify MD
    【图片】批量获取几万张图片
    RV BaseRecyclerViewAdapterHelper 总结 MD
    RecyclerView.ItemDecoration 间隔线
    Kotlin【简介】Android开发 配置 扩展
    Kotlin 特性 语法糖 优势 扩展 高阶 MD
    一个十分简洁实用的MD风格的UI主框架
    折叠伸缩工具栏 CollapsingToolbarLayout
    FloatingActionButton FAB 悬浮按钮
    Glide Picasso Fresco UIL 图片框架 缓存 MD
  • 原文地址:https://www.cnblogs.com/xiaoliziaaa/p/13821489.html
Copyright © 2011-2022 走看看