求出 最少乘坐的公交車數(shù)量 。

逛論壇的時(shí)候刷到的。覺得有點(diǎn)興趣就自己寫了一下。
給你一個(gè)數(shù)組 routes,表示一系列公交線路,其中每個(gè) routes[i] 表示一條公交線路,第 i 輛公交車將會(huì)在上面循環(huán)行駛。

例如,路線 routes[0] = [1, 5, 7] 表示第 0 輛公交車會(huì)一直按序列 1 -> 5 -> 7 -> 1 -> 5 -> 7 -> 1 -> ... 這樣的車站路線行駛。 現(xiàn)在從 source 車站出發(fā)(初始時(shí)不在公交車上),要前往 target 車站。 期間僅可乘坐公交車。

求出 最少乘坐的公交車數(shù)量 。如果不可能到達(dá)終點(diǎn)車站,返回 -1 。

示例 1:
輸入:routes = [[1,2,7],[3,6,7]], source = 1, target = 6
輸出:2
解釋:最優(yōu)策略是先乘坐第一輛公交車到達(dá)車站 7 , 然后換乘第二輛公交車到車站 6 。

示例 2:
輸入:routes = [[7,12],[4,5,15],[6],[15,19],[9,12,13]], source = 15, target = 12
輸出:-1

  // var routes = [[7,12],[4,5,15],[6],[15,19],[9,12,13]];
var routes =  [[1,2,7],[3,6,7]];
// var source = 15, target = 12;
var source = 1, target = 6;
var counts = []; 
var exclude = [];
var countsIndex = () => { return counts.length-1;}
routes.forEach(item=>{
    if(item.includes(source)){
        exclude=[];
        counts.push([source]); 
        exclude.push(item);
        if(!item.includes(target)){
            var bool = false
            item.forEach(num=>{ 
                var b = fun(num,target);
                if(b)
                    bool = true
            })
            if(!bool)//如果該線路無(wú)法到達(dá)終點(diǎn)則刪除
                counts.splice(countsIndex(),1); 
        } 
    }
})
function  fun(from = source, to = target) {
    var list = routes.filter(item=> !exclude.includes(item))
    for (const item of list) {
        if(item.includes(from) && item.includes(to) ){  
            exclude.push(item); 
            if(item.includes(to)){
                counts[countsIndex()].push(to) 
                return true;
            }else{ 
                item.forEach(num=>{
                    if(fun(num,to)){
                        counts[countsIndex()].push(from) 
                        return true;
                    }
                        
                }) 
            }
        }
    }
    return false;
}

console.log(counts);

輸出結(jié)果

image.png
image.png

第二種寫法

function fun2() {
    var routes = [
        [7, 12],
        [4, 5, 15],
        [6],
        [15, 19],
        [9, 12, 13]
    ];
    var source = 15,
        target = 12;
    /* var routes =  [[1,2,7],[3,6,7]];
    var source = 1, target = 6; */
    var 線路s = [];
    var exclude = [];
    for (let index = 0; index < routes.length; index++) {
        const elements = routes[index];
        var 線路 = new Set();
        if (!exclude.includes(elements)) { //如果沒有被排除則添加到新線路中
            elements.forEach(item => 線路.add(item));
            //排除
            exclude.push(elements);
        }
        for (const item of routes) {
            if (!exclude.includes(item)) { //判斷當(dāng)前車站是否已經(jīng)被排除  
                var b = false
                for (const iterator of item) {
                    if (線路.has(iterator)) ////判斷當(dāng)前車站是否存在于線路中
                    {
                        b = true;
                        break;
                    }
                }
                if (b) { //如果存在于線路中則合并
                    item.forEach(e => 線路.add(e))
                    exclude.push(item);
                }
            }
        }
        if (線路.size > 0)
            線路s.push(Array.from(線路));
    } 
    console.log(線路s);
}
fun2();

結(jié)果


image.png

具體的返回就懶得寫了。過程大概就這樣

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請(qǐng)通過簡(jiǎn)信或評(píng)論聯(lián)系作者。

相關(guān)閱讀更多精彩內(nèi)容

  • 他是一家上市公司的老總,很有錢,腰纏萬(wàn)貫。 有一天他大腦發(fā)熱,竟然要去體驗(yàn)一下普通老百姓的生活,一個(gè)令人深思的故事...
    天涯佳音閱讀 724評(píng)論 0 0
  • 因?yàn)橐W(xué)校完成扶貧表格。 吃過午飯,我準(zhǔn)備乘坐公交車去學(xué)校,雖說(shuō)疫情得到初步控制,但形勢(shì)還沒有完全明朗,不能麻痹...
    小河邊的依依楊柳閱讀 663評(píng)論 10 22
  • 汽車汽車嘟嘟叫,我們大家準(zhǔn)備好,背上我的小書包,我們出發(fā)了...... 對(duì)于汽車的探究,孩子們除了聯(lián)系到自己的“家...
    張?zhí)扃邔?shí)幼閱讀 389評(píng)論 0 0
  • 今天青石的票圈出鏡率最高的,莫過于張藝謀的新片終于定檔了。 一張滿溢著水墨風(fēng)的海報(bào)一次次的出現(xiàn)在票圈里,也就是老謀...
    青石電影閱讀 10,784評(píng)論 1 2
  • 董多嬌第226天堅(jiān)持分享,焦點(diǎn)相信,每個(gè)人在每一刻都會(huì)為自己做出一個(gè)決定與選擇,是他們當(dāng)時(shí)認(rèn)為最合適自己的,所以任...
    良知良能良知良能閱讀 3,917評(píng)論 1 2

友情鏈接更多精彩內(nèi)容