重新安排行程 題解: 本題也可使用回溯法,這道題有以下幾個(gè)難點(diǎn) 1.如何處理死循環(huán)問題 2.如何記錄映射關(guān)系 3.使用回溯的終止條件是什么 4.搜索的過程中,如何遍歷一個(gè)機(jī)場...
遞增子序列 題解: 乍一看這道題,好像是需要把原數(shù)組要排序的,其實(shí)不需要,我們通過兩個(gè)示例就可以看出,他是找這序列中的遞增子序列的 我們通過例子4,5,4,5],先取4 余[...
子集 題解: 我們從給的示例中可以看出,子集與組合的區(qū)別了,組合其實(shí)是在求樹形結(jié)構(gòu)的葉子節(jié)點(diǎn),子集其實(shí)在求樹所有的節(jié)點(diǎn) 1.遞歸方法的傳參 題目中給定的集合nums,取過的元...
組合總和 題解: 此題和前面的組合問題不同之處是,可以重復(fù)取同一個(gè)數(shù)字,不限制 1.遞歸函數(shù)的參數(shù) 題目給定的集合candidates以及目標(biāo)值target,題目中是在求和,...
組合總和ii 題解: 1.回溯函數(shù)的參數(shù)以及返回值 定義兩個(gè)數(shù)組變量,path用來存放符合條件的單一結(jié)果,result用來存放符合條件的結(jié)果集合 題目中給定的k,n必須要要傳...
組合 題解: 1.遞歸方法的參數(shù)以及返回值 從示例中我們可以看出,需要定義兩個(gè)列表變量,一個(gè)用來存放符合條件的單一結(jié)果,另一個(gè)存放符合條件結(jié)果的集合 方法的參數(shù)一定要有整數(shù)n...
最大二叉樹 題解: 此題目和通過前序和后序遍歷來構(gòu)造二叉樹是一樣的,1.首先我們判空數(shù)組,也是作為遞歸終止的條件。2找到數(shù)組中的最大值,以及其所在的下標(biāo)位置,3.創(chuàng)建根節(jié)點(diǎn),...
找樹左下角的值 題解: 如何理解樹最下角的值?最后一行,且是最左邊的值。找最左邊,我們想到的是前序遍歷。 1.確定遞歸函數(shù)的參數(shù)和返回值 遍歷的樹的根節(jié)點(diǎn),記錄深度的變量,無...
二叉樹的所有路徑 題解: 這道題要求從根節(jié)點(diǎn)到葉子的路徑,所以需要前序遍歷,這樣才方便讓父節(jié)點(diǎn)指向孩子節(jié)點(diǎn),找到對應(yīng)的路徑,因此涉及到了回溯。 1.遞歸函數(shù)及返回值 傳入根節(jié)...
二叉樹的最大深度 題解: 根據(jù)題中解釋二叉樹的深度是根節(jié)點(diǎn)到葉子節(jié)點(diǎn)的節(jié)點(diǎn)樹,我們也可以理解為第一層到最后一層的距離,我們可以使用層序遍歷,最終判斷結(jié)果集中的長度 代碼: 二...
二叉樹的層序遍歷 題解: 使用隊(duì)列來實(shí)現(xiàn),定義一個(gè)結(jié)果集res,定義一個(gè)雙端隊(duì)列,初始化為根節(jié)點(diǎn),我們示例可以看出,是兩層列表嵌套,也就是說我們要在循環(huán)中還要?jiǎng)?chuàng)建一個(gè)列表tm...
二叉樹的理論基礎(chǔ) 二叉樹的種類 滿二叉樹:如果一棵樹只有度(表示節(jié)點(diǎn)擁有的子節(jié)點(diǎn)數(shù))為0的結(jié)點(diǎn)和度為2的節(jié)點(diǎn),并且度為0的節(jié)點(diǎn)在同一層上 完全二叉樹:在完全二叉樹中,除了底層...
滑動(dòng)窗口最大值 題解: 使用單調(diào)隊(duì)列,放進(jìn)去窗口里的元素,隨著窗口的移動(dòng),隊(duì)列也一進(jìn)一出,每次移動(dòng)之后,就會得到窗口的最大值是什么。隊(duì)列里的數(shù)據(jù)一定是要排序的,不然不知道最大...
有效的括號 題解: 有三種不匹配的情況: 1.字符串里左方向的括號多余了 2.括號沒有多余,括號的類型不匹配 3.字符串里右方向的括號多余了 代碼實(shí)現(xiàn)上來說,我們在遍歷到左括...
棧與隊(duì)列最基本的特征: 棧:先進(jìn)后出 隊(duì)列:先進(jìn)先出 用棧實(shí)現(xiàn)隊(duì)列: 題解: 棧是先進(jìn)后出的數(shù)據(jù)結(jié)構(gòu),隊(duì)列是先進(jìn)先出,題目中已經(jīng)說明,需要兩個(gè)棧來實(shí)現(xiàn)隊(duì)列,題目中讓實(shí)現(xiàn)的方法...
重復(fù)的子字符串 題解: 首先找到 s 的最短重復(fù)子串 t,即 t 是 s 的一個(gè)前綴,并且 s 可以由 t 重復(fù)若干次得到。具體方法是從字符串的中間位置開始,逐步縮小范圍,直...
反轉(zhuǎn)字符串 題解: 使用雙指針,從數(shù)組的兩端開始,進(jìn)行對換 代碼: 反轉(zhuǎn)字符串 ii 題解: 套用上題的反轉(zhuǎn)方法,將字符串列表化;題意的意思是計(jì)數(shù)至2k,那我們每次遍歷至2k...