解題思路:該題與先前的7.15日的每日一題相似,兩者都是不同的二叉搜尋樹,不同的是,先前只需返回總數,而該題需要返回所有的樹,但解題思路是相似的,要解決根節點的情況就要解決左右子樹的情況,這裡同樣可以使用動態規劃來實現,但此處先用遞迴來實現,便於理解。根據二叉搜尋樹的性質,顯然,i作為根節點時的左子樹範圍為[0,i - 1],右子樹範圍為[i+1,n],同樣,其餘子樹的情況也可用該形式表示,不過其start與end並非0與n,需要根據父節點的傳入引數決定。設計好遞迴引數後,我們便需設計遞迴函式內部。
注意點:
空間複雜度與時間複雜度的計算涉及到卡特蘭數,自行查閱理解。
2020 8 4 力扣每日
儲存0入度元素 14for int i 0 i numcourses i 18while queue.isempty 26 27return count numcourses 判斷拓撲排序元素個數是否與課程數一致28 29 解題思路 根據題目中先修課程的描述,其與有向圖的構造類似,而判斷最終是否可以...
2020 7 23 力扣每日
解題思路 這是一道經典的動態規劃題目,由於移動方向為向右與向下,說明除了第一行第一列以外,其餘點的對應最小路徑和,只可能是從左移動至當前位置的路徑和,或是從上方移動至當前位置的路徑和。我們使用二維陣列dp row col 儲存所有點的對應路徑和情況。用up,left分別儲存從上,與從左的兩種情況,顯...
2020 7 17 力扣每日
解題思路 對於該題要求,顯然可以利用暴力法即順序查詢的方法查詢元素插入位置,但這顯然不是最優解法。此時很容易想到利用二分查詢法,由於該題陣列內可能不存在插入的元素,所以需要略微修改下二分查詢的演算法,搜尋到最後乙個小於目標的元素,插入到它的後面,或搜尋到第乙個大於等於目標的元素,插入到它的當前位置。...