筆試算法須知---用JS實現(xiàn)隊列處理問題

隊列

  • 普通隊列 先進先出FIFO
  • 循環(huán)隊列 隊首出隊后诅妹,又從隊尾入隊
  • 優(yōu)先隊列
    如果優(yōu)先值小的元素放到隊列的前面,這叫做最小優(yōu)先隊列
    反之優(yōu)先值大的元素放到隊列的前面,這叫做最大優(yōu)先隊列
隊列的操作(就是醫(yī)院看病排隊)
  1. 向隊列中添加元素(進入排隊的隊伍中)--push
  2. 移除隊頭元素(隊伍最前面的人出隊,進診室)--shift
  3. 查看隊頭元素(查看隊伍最前面的人)--front
  4. 判斷隊列是否為空(看看隊伍中有沒有人)--isEmpty
  5. 移除隊伍全部元素(下班了笼吟,都走了吧)--clear
  6. 查看棧里元素個數(shù)(查看排隊的有多少人)--size

實現(xiàn)一個隊列類

function Queue(){
    var queueData = [];
    // FIFO=Fisrt In First Out
    this.push = function(element){//入隊操作---在數(shù)組尾插入新元素
        queueData.push(element);
        return queueData;
    };
    this.shift = function(element){//出隊操作---在數(shù)組頭刪除元素
        return shiftElement = queueData.shift(element);
    };
    this.front = function(){
        return queueData[0];
    };
    this.size = function(){
        return queueData.length;
    };
    this.isEmpty = function(){
        return queueData.length == 0;
    }
    this.clear = function(){
        queueData = [];
    }
    this.print = function(){
        console.log(queueData.toString())
    }
}

最小優(yōu)先隊列

function PriorityQueue(){
    var queueData = [];
    function QueEle(element,priority){
        this.element = element;
        this.priority = priority;
    }
//-----------與普通隊列的不同是在入隊過程中判斷優(yōu)先級,來確定元素在隊列該插入的位置霸旗。
    this.push = function(element,priority){
        var queObj = new QueEle(element,priority);
        if(this.isEmpty()){
            this.push(queObj);
        }else{
            var flag = false;
            for(var i=0;i<queueData.length;i++){
                if(queObj.priority<queueData[i].priority){
                //判斷優(yōu)先級赞厕,優(yōu)先級小的放在優(yōu)先級大的前面,
                    queueData.splice(i, 0, queObj);//插入元素
                    flag = true;
                    break;
                }
            }
            if(!flag){
                queueData.push(queObj);
            }
        }
    }
    this.shift = function(element){//出隊操作---在數(shù)組頭刪除元素
        return shiftElement = queueData.shift(element);
    };
    this.front = function(){
        return queueData[0];
    };
    this.size = function(){
        return queueData.length;
    };
    this.isEmpty = function(){
        return queueData.length == 0;
    }
    this.clear = function(){
        queueData = [];
    }
    this.print = function(){
        var temp = [];
        for(var j=0;j<queueData.len;j++){
            temp.push(queueData[i].ele);//只輸出元素的名字
        }
        console.log(temp.toString());
    }
 }

循環(huán)隊列--擊鼓傳花問題

核心代碼就是將隊列變成循環(huán)隊列定硝,按照給定的次數(shù)循環(huán)隊列后皿桑,將隊首的元素出隊,直到隊列的長度為1蔬啡。結(jié)束隊列诲侮,返回隊列中存在的最后一個值。

function JGCH(namelists,num){//nameList為姓名數(shù)組箱蟆,num為一個數(shù)字用來迭代隊列
    var hua = new Queue();
    for(var m=0;m<namelists.length;m++){
        hua.push(namelists[m]);//將傳入的數(shù)組存入隊列中
    };
    var loser;
    while(hua.size()>1){
        for(var n=0;n<num;n++){
            hua.push(hua.shift());//出隊后入隊沟绪,形成循環(huán)隊列
        }
        loser = hua.shift();
        console.log(loser+"淘汰");//每一次迭代完成后,將隊首的出隊
    }
    return hua.shift();
 }//詳細代碼及測試用例如下

https://github.com/edisonchan97/JS-algorithm/blob/master/%E5%87%BB%E9%BC%93%E4%BC%A0%E8%8A%B1--%E5%BE%AA%E7%8E%AF%E9%98%9F%E5%88%97

擊鼓傳花結(jié)果

希望我的總結(jié)或許能幫到大家一丟丟空猜,加油U来取!辈毯!

大家爭取拿到 Offer0犹邸!谆沃!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末钝凶,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子唁影,更是在濱河造成了極大的恐慌耕陷,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,978評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件据沈,死亡現(xiàn)場離奇詭異哟沫,居然都是意外死亡,警方通過查閱死者的電腦和手機锌介,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評論 2 384
  • 文/潘曉璐 我一進店門嗜诀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事裹虫≈壮埃” “怎么了融击?”我有些...
    開封第一講書人閱讀 156,623評論 0 345
  • 文/不壞的土叔 我叫張陵筑公,是天一觀的道長。 經(jīng)常有香客問我尊浪,道長匣屡,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,324評論 1 282
  • 正文 為了忘掉前任拇涤,我火速辦了婚禮捣作,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘鹅士。我一直安慰自己券躁,他們只是感情好,可當我...
    茶點故事閱讀 65,390評論 5 384
  • 文/花漫 我一把揭開白布掉盅。 她就那樣靜靜地躺著也拜,像睡著了一般。 火紅的嫁衣襯著肌膚如雪趾痘。 梳的紋絲不亂的頭發(fā)上慢哈,一...
    開封第一講書人閱讀 49,741評論 1 289
  • 那天,我揣著相機與錄音永票,去河邊找鬼卵贱。 笑死,一個胖子當著我的面吹牛侣集,可吹牛的內(nèi)容都是我干的键俱。 我是一名探鬼主播,決...
    沈念sama閱讀 38,892評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼世分,長吁一口氣:“原來是場噩夢啊……” “哼方妖!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起罚攀,我...
    開封第一講書人閱讀 37,655評論 0 266
  • 序言:老撾萬榮一對情侶失蹤党觅,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后斋泄,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體杯瞻,經(jīng)...
    沈念sama閱讀 44,104評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年炫掐,在試婚紗的時候發(fā)現(xiàn)自己被綠了魁莉。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,569評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖旗唁,靈堂內(nèi)的尸體忽然破棺而出畦浓,到底是詐尸還是另有隱情,我是刑警寧澤检疫,帶...
    沈念sama閱讀 34,254評論 4 328
  • 正文 年R本政府宣布讶请,位于F島的核電站,受9級特大地震影響屎媳,放射性物質(zhì)發(fā)生泄漏夺溢。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,834評論 3 312
  • 文/蒙蒙 一烛谊、第九天 我趴在偏房一處隱蔽的房頂上張望风响。 院中可真熱鬧,春花似錦丹禀、人聲如沸状勤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽持搜。三九已至,卻和暖如春攒读,著一層夾襖步出監(jiān)牢的瞬間朵诫,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評論 1 264
  • 我被黑心中介騙來泰國打工薄扁, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留剪返,地道東北人。 一個月前我還...
    沈念sama閱讀 46,260評論 2 360
  • 正文 我出身青樓邓梅,卻偏偏與公主長得像脱盲,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子日缨,可洞房花燭夜當晚...
    茶點故事閱讀 43,446評論 2 348

推薦閱讀更多精彩內(nèi)容

  • @synthesize和@dynamic分別有什么作用匣距?@property有兩個對應(yīng)的詞面哥,一個是 @synthes...
    筆筆請求閱讀 508評論 0 1
  • 《招聘一個靠譜的 iOS》—參考答案(下)說明:面試題來源是微博@我就叫Sunny怎么了的這篇博文:《招聘一個靠譜...
    筆筆請求閱讀 313評論 0 0
  • 上周的這個時間尚卫,是在趕往機場的路上. 心情是前路未知的迷茫與彷徨…如果有誰跟我說可以讓我半小時豁然開朗,我大概會用...
    14號棉棉閱讀 378評論 3 1
  • 人生第一枚戒指尸红,雖然不是什么名貴的東西吱涉,但是內(nèi)心異常的歡喜刹泄!非常的喜歡,但是內(nèi)心又些許惆悵怎爵!呵呵特石,依然過去,是自己...
    正念如是閱讀 95評論 0 0
  • 水彩的手繪過程我只做簡單的分享鳖链,不會像彩鉛教程那樣寫的非常仔細姆蘸。因為我認為水彩繪畫很開放很有趣,每個人對色彩的認知...
    子辰手繪閱讀 2,706評論 29 51