leetcode學習筆記38

2021-09-06 13:16:33 字數 979 閱讀 2827

for example, given n = 3, a solution set is:

[「((()))」,

「(()())」,

「(())()」,

「()(())」,

「()()()」

]這道題是借鑑網上的思路解出的,主要摘自

所謂backtracking都是這樣的思路:在當前局面下,你有若干種選擇。那麼嘗試每一種選擇。如果已經發現某種選擇肯定不行(因為違反了某些限定條件),就返回;如果某種選擇試到最後發現是正確解,就將其加入解集

所以你思考遞迴題時,只要明確三點就行:選擇 (options),限制 (restraints),結束條件 (termination)。即「ort原則」(這個是我自己編的)

對於這道題,在任何時刻,你都有兩種選擇:

加左括號。

加右括號。

同時有以下限制:

如果左括號已經用完了,則不能再加左括號了。

如果已經出現的右括號和左括號一樣多,則不能再加右括號了。因為那樣的話新加入的右括號一定無法匹配。

結束條件是:

左右括號都已經用完。

結束後的正確性:

左右括號用完以後,一定是正確解。因為1. 左右括號一樣多,2. 每個右括號都一定有與之配對的左括號。因此一旦結束就可以加入解集(有時也可能出現結束以後不一定是正確解的情況,這時要多一步判斷)。

遞迴函式傳入引數:

限制和結束條件中有「用完」和「一樣多」字樣,因此你需要知道左右括號的數目。

當然你還需要知道當前局面sublist和解集res。

class

solution

public

void

backtrack

(list

res,string substring,

int left,

int right)

if(left>0)

if(left}}

IOS學習筆記38

解析 很多剛開始學習ios開發的同學可能在看別人的 的時候會發現有部分 import操作寫在 m 檔案中,而 h 檔案僅僅使用 class進行宣告,不禁納悶起來,為什麼不直接把 import放到 件中呢?這是因為 h 檔案在修改後,所有 import 該 h 檔案的所有檔案必須重 新build,因此...

JUNIT3 8學習筆記(2)

2008年8月14號 天氣陰 周五 junit3.8學習筆記 2 執行testcase類的測試類,在執行每乙個測試類方法之前都會執行setup方法,因此可以將一些重複出現的程式碼寫到setup方法中,也可以將測試資料庫的程式碼連線程式碼寫到setup方法中。同樣,有初始化方法,就有銷毀方法teard...

Flash Flex學習筆記 38 緩動動畫

緩動 與 勻變速 看上去很類似,但其實有區別 勻變速的公式為 v v0 at 速度v與時間t是線性 正比 關係,而且這種運動不需要確定目標點,速度可以按照這種規律一直變下去 而緩動指的是物體越接近目標時速度越慢,速度跟距離成反比關係,用公式描述為 v k s 0先看個演示 package priva...