[Leetcode][深度優(yōu)先/回溯法/DFS]相關(guān)題目匯總/分析/總結(jié)

題目匯總

以下鏈接均為我博客內(nèi)對應(yīng)博文胯甩,有解題思路和代碼值纱,不定時更新補充。

目前范圍:Leetcode前150題

深度優(yōu)先/回溯法題目

輸入手機鍵盤的數(shù)字步做,組合所有可能的字母卡乾。

求一組不重復(fù)的數(shù)的全排列

求一組數(shù)的全排列(有重復(fù)數(shù)字),返回不重復(fù)的全排列

給定n信卡,生成n對括號隔缀,必須正常關(guān)閉所有符號

計算數(shù)獨,假設(shè)解唯一

給定一個無重復(fù)元素的數(shù)組 candidates 和一個目標數(shù) target 傍菇,找出 candidates 中所有可以使數(shù)字和為 target 的組合猾瘸。candidates 中的數(shù)字可以無限制重復(fù)被選取。

給定一個數(shù)組 candidates 和一個目標數(shù) target ,找出 candidates 中所有可以使數(shù)字和為 target 的組合牵触。candidates 中的每個數(shù)字在每個組合中只能使用一次淮悼。

經(jīng)典的八皇后問題

找出由[1,2,3…n]中所有數(shù)字組成的序列中第k大的。

求在1到n個數(shù)中挑選k個數(shù)的所有的組合類型荒吏。

給定一個由不同數(shù)字組成的集合敛惊,羅列出該集合的所有子集。

給定一個含有重復(fù)數(shù)字組成的集合绰更,羅列出該集合的所有子集瞧挤。

在一個二維矩陣中,每個元素都是一個字母儡湾,要判斷目標字符串能否由該矩陣中的元素連接而成特恬。所謂連接就是從矩陣中的某一個元素開始,向前后左右不斷前進徐钠,但不允許再次經(jīng)過走過的元素癌刽。

找出一個由純數(shù)字組成的序列能夠構(gòu)成的不同的IP地址。

將一個字符串分割成若干個子字符串尝丐,使得子字符串都是回文字符串显拜,要求列出所有的分割方案。

給定一個目標字符串和一組字符串爹袁,判斷目標字符串能否拆分成數(shù)個字符串远荠,這些字符串都在給定的那組字符串中。

給定一個目標字符串和一組單詞失息,將目標字符串進行拆分譬淳,要求拆分出的部分在那個單詞組中,拆分后的單詞用空格隔開盹兢,給出所有可能的拆分情況邻梆。

深度優(yōu)先總結(jié)

遞歸與迭代

二者相互關(guān)系

  1. 從計算機角度講,遞歸是迭代的特例绎秒。這個例子是兩種方式計算階乘的javascript代碼實現(xiàn)浦妄,可以在瀏覽器中,按F12調(diào)出控制臺见芹,在控制臺中進行實驗校辩。// 迭代,重復(fù)一定的算法辆童,達到想要的目的宜咒。數(shù)學(xué)上二分法,牛頓法是很好的迭代例子
function iteration(x){
   var sum=1; 
   for(x; x>=1; x--){
       sum = sum*x;
   }
}

// 遞歸把鉴,自身調(diào)用自身的迭代就是遞歸故黑。
// 但是正式定義好像不是這么說的儿咱。這只是我個人理解

function recursion(x){
   if(x>1){
       return x*recursion(x-1);
   }else{
       return 1;
   }
}
  1. 任何一個迭代的例子都有它的遞歸表示法,反之亦然场晶。比如請將下列冒泡排序(由大到谢觳骸)從迭代形式改寫為遞歸形式
:function swap(array, i, j){
    const temp = array[i]
    array[i] = array[j]
    array[j] = temp
}
function bubble(array){
    let length = array.length
    for(let i = length-1; i>0; i--){
        for(let j=0; j<i; j++){
            if(array[j] < array[j+1]){
                swap(array, j, j+1)
            }
        }
    }
    return array
}
answer:function swap(array, i, j){
    const temp = array[i]
    array[i] = array[j]
    array[j] = temp
}
function bubble(array, i = array.length-1, j = 0){
    if(i===1){
        return array
    }
    if(j > i){
        j = 0
        i--
    }
    if(array[j] < array[j+1]){
        swap(array, j, j+1)
    }

    return bubble(array, i, j+1)
}

從代碼優(yōu)雅美觀角度講,遞歸的形式縮進會更少一些诗轻,顯得平整钳宪。

遞歸的劣勢

1.遞歸容易產(chǎn)生"棧溢出"錯誤(stack overflow)因為需要同時保存成千上百個調(diào)用記錄,所以遞歸非常耗費內(nèi)存扳炬。這也就是為什么會有『尾遞歸調(diào)用優(yōu)化』而迭代對于瀏覽器的影響頂多是由于計算量大而發(fā)生線程長時間占用的假死現(xiàn)象吏颖,不至于在運行時棧溢出而拋錯的問題『拚粒【備注:后來發(fā)現(xiàn) Chrome v61.0.3163.100 根本沒有做尾遞歸優(yōu)化處理半醉。】

2.效率方面劝术,遞歸可能存在冗余計算使用遞歸的方式會有冗余計算(比如最典型的是斐波那契數(shù)列缩多,計算第6個需要計算第4個和第5個,而計算第5個還需要計算第4個养晋,所處會重復(fù))衬吆。迭代在這方面有絕對優(yōu)勢。但是這并不表明遞歸可以完全被取代绳泉。因為遞歸有更好的可讀性咆槽。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市圈纺,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌麦射,老刑警劉巖蛾娶,帶你破解...
    沈念sama閱讀 216,843評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異潜秋,居然都是意外死亡蛔琅,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,538評論 3 392
  • 文/潘曉璐 我一進店門峻呛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來罗售,“玉大人,你說我怎么就攤上這事钩述≌辏” “怎么了?”我有些...
    開封第一講書人閱讀 163,187評論 0 353
  • 文/不壞的土叔 我叫張陵牙勘,是天一觀的道長职恳。 經(jīng)常有香客問我所禀,道長,這世上最難降的妖魔是什么放钦? 我笑而不...
    開封第一講書人閱讀 58,264評論 1 292
  • 正文 為了忘掉前任色徘,我火速辦了婚禮,結(jié)果婚禮上操禀,老公的妹妹穿的比我還像新娘褂策。我一直安慰自己,他們只是感情好颓屑,可當我...
    茶點故事閱讀 67,289評論 6 390
  • 文/花漫 我一把揭開白布斤寂。 她就那樣靜靜地躺著,像睡著了一般邢锯。 火紅的嫁衣襯著肌膚如雪扬蕊。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,231評論 1 299
  • 那天丹擎,我揣著相機與錄音尾抑,去河邊找鬼。 笑死蒂培,一個胖子當著我的面吹牛再愈,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播护戳,決...
    沈念sama閱讀 40,116評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼翎冲,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了媳荒?” 一聲冷哼從身側(cè)響起抗悍,我...
    開封第一講書人閱讀 38,945評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎钳枕,沒想到半個月后缴渊,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,367評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡鱼炒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,581評論 2 333
  • 正文 我和宋清朗相戀三年衔沼,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片昔瞧。...
    茶點故事閱讀 39,754評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡指蚁,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出自晰,到底是詐尸還是另有隱情凝化,我是刑警寧澤,帶...
    沈念sama閱讀 35,458評論 5 344
  • 正文 年R本政府宣布酬荞,位于F島的核電站缘圈,受9級特大地震影響劣光,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜糟把,卻給世界環(huán)境...
    茶點故事閱讀 41,068評論 3 327
  • 文/蒙蒙 一绢涡、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧遣疯,春花似錦雄可、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,692評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至辨液,卻和暖如春虐急,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背滔迈。 一陣腳步聲響...
    開封第一講書人閱讀 32,842評論 1 269
  • 我被黑心中介騙來泰國打工止吁, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人燎悍。 一個月前我還...
    沈念sama閱讀 47,797評論 2 369
  • 正文 我出身青樓敬惦,卻偏偏與公主長得像,于是被迫代替她去往敵國和親谈山。 傳聞我的和親對象是個殘疾皇子俄删,可洞房花燭夜當晚...
    茶點故事閱讀 44,654評論 2 354

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