iOS-無序圖環(huán)的尋找和FBRetainCycleDetector的demo

????????之前在面試的時(shí)候有遇到過問無序圖找環(huán)的問題, 當(dāng)時(shí)覺得有點(diǎn)悶逼, 畢竟不是科班出身, 也沒有靜下心去看一些算法的知識. 最近在看Facebook的FBRetainCycleDetector的SDK的時(shí)候,看到運(yùn)用DFS的算法找循環(huán)引用,回想到之前找環(huán)的問題,原理一致,然后今天就自己寫了一個(gè)找環(huán)的demo

下圖是一張包含幾個(gè)環(huán)的無序圖:

無序圖

先將每個(gè)頂點(diǎn)封裝成為一個(gè)對象:

BLEdgeModel

然后根據(jù)無序圖封裝每一個(gè)頂點(diǎn),如下代碼:

封裝無序圖的頂點(diǎn)

接下來就是來尋找圖中頂點(diǎn)所產(chǎn)生的環(huán), 代碼如下:?

尋找無序圖中的環(huán)

按照我上面無序圖來說,無序圖的最深深度是如下圖:

無序圖頂點(diǎn)深度

大致的思路就是:

以頂點(diǎn)1為起始頂點(diǎn), 通過深度尋找法,找到最后一個(gè)頂點(diǎn)6,然后一步一步往回尋找環(huán)(當(dāng)然這是以我給的例子作為代表, 如果起始頂點(diǎn)和封裝的相連頂點(diǎn)列表中頂點(diǎn)的順序不一致的話,過程會不一樣,不過最終找到的環(huán)是一樣的), 代碼步驟的思路我已經(jīng)寫在demo里面了

以下是demo地址: (包含F(xiàn)BRetainCycleDetector的最簡單的demo)

https://github.com/IBIgLiang/iOS-RetainCycleStudy

下次再介紹FBRetainCycleDetector的源代碼!!!

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

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

  • 1、通過CocoaPods安裝項(xiàng)目名稱項(xiàng)目信息 AFNetworking網(wǎng)絡(luò)請求組件 FMDB本地?cái)?shù)據(jù)庫組件 SD...
    陽明AI閱讀 16,203評論 3 119
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,030評論 25 709
  • 最近微信小程序越來越受歡迎了,目前微信小程序已經(jīng)允許開發(fā)個(gè)人的小程序。 下面就來給大家分享一下,如何開發(fā)一款屬于自...
    博為峰51Code教研組閱讀 431評論 0 1
  • 今早和朋友聊起書寫,無意中談起這半年來參加的各種寫作小組,以及自己辦過的那兩期,心里很多感慨。 動筆去寫,不怕被別...
    穆勒書信時(shí)光閱讀 469評論 4 2
  • 作為一名曾經(jīng)的醫(yī)生,朋友圈里也是醫(yī)生居多,每每有醫(yī)鬧的報(bào)道,基本上也能支持一下,可是這倆天的經(jīng)歷,卻讓我忍不住想吐...
    葉彌兒閱讀 213評論 0 0

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