亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

檢查數組中連接關系是否有往回連接?

檢查數組中連接關系是否有往回連接?

PHP
慕工程0101907 2019-03-06 05:03:37
問題描述假如一個儲存有連線數據的數組,例:1->2->3-4let link = [     {from:1,to:2},     {from:2,to:3},     {from:3,to:4}, ];需要判斷檢查數組中的數據是否有往回連接的情況,比如發生了1->2->3->1這種情況。搗鼓了半天我寫的代碼如下(不考慮兩個點之間有重復連接和互相連接的情況下):// 測試數據let link = [     {from:3,to:4},     {from:3,to:5},     {from:2,to:4},     {from:2,to:3},     {from:1,to:2},     {from:2,to:5} ];// 檢查每一條線路是否有往回連接function checkLine(arr,data){    let _to = arr[arr.length-1];    for(let j=0;j<data.length;j++){        if(data[j].from === _to){            if(arr.indexOf(data[j].to)!==-1){                 flag = true;             }else{                 arr.push(data[j].to);                let _data = data.filter(item=>(item.from!==data[j].from && item.to!==data[j].to));                 checkLine(arr,_data);                return;             }         }     } }// 標記是否有往回連接的情況let flag = false;// 開始for(let i=0;i<link.length;i++){    let arr = [];     arr.push(link[i].from,link[i].to);    let _data = link.filter(item=>(item.from!==link[i].from && item.to!==link[i].to));     checkLine(arr,_data); }if(flag===true){    console.log("出錯"); }上面的代碼簡單的測試了下應該沒問題,但是我自己看著都有點亂,有沒有什么更好的方法或者JS的新特性可以更快的解決這個問題。
查看完整描述

1 回答

?
暮色呼如

TA貢獻1853條經驗 獲得超9個贊

轉成有向圖,然后遍歷即可。有向圖的遍歷過程中自動就能檢查回路的情況

查看完整回答
反對 回復 2019-03-28
  • 1 回答
  • 0 關注
  • 302 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號