力扣 32 最長有效括號 思維 棧

2021-10-05 10:35:14 字數 1116 閱讀 9101

思路一:初始置cur

=ct=

0cur=ct=0

cur=ct

=0,如果遇到(

((,就令cur

、ctcur、ct

cur、ct

自增,否則令cur

curcu

r自減,ctct

ct自增,那麼當cur

=0cur=0

cur=

0時說明當前子串匹配了,我們可以令ans

=max

(ans

,ct)

ans=max(ans,ct)

ans=ma

x(an

s,ct

),但是當cur

<

0cur<0

cur<

0時說明當前子串已經沒有意義了,所以需要把cur

、ctcur、ct

cur、ct

都置為0

00。但是這樣處理不了(((

)((()

((()

這樣的情況,所以還需要反著處理一遍。

class

solution

cur=ct=0;

for(

int i=siz-

1;i>=

0;i--

)return ans;}}

;

思路二:用棧來實現,把每個(

((的下標壓進去,當碰到)

))的時候,通過下標之差計算答案。但是像()(

)()()

()()

這種情況就很難處理,我們考慮初始時加入乙個−1-1

−1作為邊界,先彈出棧頂,再計算差值,這樣也能得到正確答案。需要注意的是,如果彈出棧頂後棧為空,說明在這一步之前的括號已經完成匹配了,所以這個時候不能計算貢獻,應該把當前座標i

ii壓進去作為新的邊界。

class

solution

}return ans;}}

;

力扣32 最長有效括號

32.最長有效括號 給定乙個只包含 和 的字串,找出最長的包含有效括號的子串的長度。示例 1 輸入 輸出 2 解釋 最長有效括號子串為 示例 2 輸入 輸出 4 解釋 最長有效括號子串為 這是道困難題,看到了括號,我第一想到的就是棧,因為對於匹配括號的題,棧這種資料結構是非常好用的。其次最長有效,這...

力扣刷題 32 最長有效括號

給定乙個只包含 和 的字串,找出最長的包含有效括號的子串的長度。動態規劃初步 動態規劃可以理解為是一種遞迴的思想,當前的狀態可以由之前已知的狀態推導過來 用數學表示即 f x 可以由f x 1 或者f x 2 的某種關係得到。一般來講,目標是求什麼則什麼即為狀態,然後分析當前狀態和之前狀態的推導關係...

32 最長有效括號 (棧)

給定乙個只包含 和 的字串,找出最長的包含有效括號的子串的長度。示例 1 輸入 輸出 2 解釋 最長有效括號子串為 示例 2 輸入 輸出 4 解釋 最長有效括號子串為 困難 題意是找到最長的連續有效括號 如s 有效的連續括號只有 答案應該是2.一開始理解錯了,以為是要求所有有效括號的總長度。分析 利...