文档章节

Queue

gtandsn
 gtandsn
发布于 2019/11/20 16:35
字数 129
阅读 11
收藏 0
class Queue {
    constructor() {
        this._items = [];
    }
    enqueue(item) {
        this._items.push(item);
    }
    dequeue() {
        this._items.shift();
    }
    head() {
        return this._items[0];
    }
    tail() {
        return this._items[this._items.length - 1];
    }
    isEmpty() {
        return !this._items.length;
    }
    size() {
        return this._items.length;
    }
    clear() {
        this._items = [];
    }
}

//约瑟夫环
const arr_100 = Array.from({length:100},(_,i) => i++);
function delRing(list) {
    const queue = new Queue();
    list.forEach( item => { queue.enqueue(item)});

    let index = 0;
    while (queue.size() !== 1 ) {
        const item = queue.dequeue();
        index++;
        if(index % 3 !== 0) {
            queue.enqueue(item);
        }
    }
    return queue.tail();
}

console.log(delRing(arr_100));

function fibonacci(number) {

    const queue = new Queue();
    queue.enqueue(1);
    queue.enqueue(1);

    let index = 0 ;
    while (index < number - 2) {
        index++;
        const delItem = queue.dequeue();
        const headItem = queue.head();
        const nextItem = delItem + headItem;
        queue.enqueue(nextItem);
    }
    return queue.tail();
}

 

© 著作权归作者所有

上一篇: 深入理解模块
下一篇: Stack
gtandsn
粉丝 0
博文 121
码字总数 54095
作品 0
成都
私信 提问
golang思考之运行速度之channel

golang channel测速程序: C语言有锁并发队列: C语言无锁并发队列: TCP: 速度: 测试暂时完成了,留下了很多问题: 1、为什么golang的channel比C语言快?如果C语言在内核态实现并发队列呢...

学习吧
2015/10/20
201
0
Linux平台上C语言实现异步队列的两种方法

Linux上目前有两种事件通知方式,一种是线程条件变量,一种是利用eventfd实现事件通知,下面介绍一下利用这两种方法实现异步队列的方法。 线程条件变量 相关函数介绍 pthreadcondinit:初始化...

frank21
2014/02/27
3.9K
0
IOS之多线程

多线程GCD 分为:主队列、全局队列、自定义队列 dispatchgetmianqueue dispatchgetglobalqueue dispatchqueuecreate dispatchasync dispatchsync dispatchqueueconcurrent dispatchqueueseri......

飞雪无痕
2016/01/18
89
0
python多线程队列安全

这是一个经典的“生产者消费者”例子: python queue模块有三种队列: 1、python queue模块的FIFO队列先进先出。 2、LIFO类似于堆。即先进后出。 3、还有一种是优先级队列级别越低越先出来。 ...

lihuipeng
2014/10/18
0
0
有些数的素因子只有3,5,7.请设计一个算法,找出其中第k个数

public static int removeMin(Queue<Integer> q) { int min=q.peek(); for(Integer v:q) { if(min>v) min=v; } while(q.contains(min)) { q.remove(min); } return min; } public static voi......

一贱书生
2016/11/21
18
0

没有更多内容

加载失败,请刷新页面

加载更多

如何使用Selenium WebDriver截屏

有谁知道是否可以使用Selenium WebDriver截屏? (注:不是硒RC) #1楼 吉顿 import org.openqa.selenium.OutputType as OutputTypeimport org.apache.commons.io.FileUtils as FileUtils......

技术盛宴
27分钟前
4
0
高阶函数

定义:能够包装函数的,使原本函数增加一些额外的福利的函数 比如: function higherOrderFn(fn){} 能够对fn增加一些额外的福利 应用场景: (function () { var getLogin = functio...

gtandsn
33分钟前
9
0
架构师成长之后

小致Daddy
34分钟前
6
0
Git 介绍和日常命令

git 介绍 GitHub是一个面向开源及私有软件项目的托管平台,因为只支持git 作为唯一的版本库格式进行托管,故名GitHub。 GitHub于2008年4月10日正式上线,除了Git代码仓库托管及基本的 Web管理...

郭靖Michael
今天
9
0
技巧以管理R会话中的可用内存

人们使用什么技巧来管理交互式R会话的可用内存? 我使用下面的函数(基于Petr Pikal和David Hinds在2004年r-help列表中的发布)列出(和/或排序)最大的对象,并偶尔对其中一些对象进行rm() ...

javail
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部