leetcode全部題目答案

2021-07-25 03:26:58 字數 1193 閱讀 1880

32. longest valid parentheses

given a string containing just the characters'('and')', find the length of the longest valid (well-formed) parentheses substring.

for"(()", the longest valid parentheses substring is"()", which has length = 2.

another example is")()())", where the longest valid parentheses substring is"()()", which has length = 4.

時間 o(n) 空間 o(n)

用stack的方法本質上和valid parentheses是一樣的,乙個右括號能消去stack頂上的乙個左括號。不同的是,為了能夠計算括號對的長度我們還需要記錄括號們的下標。這樣在彈出乙個左括號後,我們可以根據當前座標減去棧中上乙個(也就是pop過後的top元素)的座標來得到該有效括號對的長度。

public class solution  else  else 

maxlen = math.max(maxlen, curlen);

} else }}

return maxlen;

}}

也可用動態規劃的思想,但是沒太看明白

時間 o(n) 空間 o(n)

動態規劃法將大問題化為小問題,我們不一定要一下子計算出整個字串中最長括號對,我們可以先從後向前,一點一點計算。假設d[i]是從下標i開始到字串結尾最長括號對長度,s[i]是字串下標為i的括號。如果s[i-1]是左括號,如果i + d[i] + 1是右括號的話,那d[i-1] = d[i] + 1。如果不是則為0。如果s[i-1]是右括號,因為不可能有右括號開頭的括號對,所以d[i-1] = 0。

public

class

solution }}

maxlen = math.max(maxlen, dp[i]);

}return maxlen;

}}

LeetCode題目以及答案

1 給定乙個整數陣列和乙個目標值,找出陣列中和為目標值的兩個數,你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 7 9 所以返回 0,1 複雜版 usr bin python coding...

LeetCode題目以及答案(9)

題目 有兩種特殊字元。第一種字元可以用一位元0來表示。第二種字元可以用兩位元 10 或 11 來表示。現給乙個由若干位元組成的字串。問最後乙個字元是否必定為乙個一位元字元。給定的字串總是由0結束。示例 1 輸入 bits 1,0,0 輸出 true 解釋 唯一的編碼方式是乙個兩位元字元和乙個一位元字...

LeetCode題目以及答案 10

題目 給乙個非負整數 num,反覆新增所有的數字,直到結果只有乙個數字。例如 設定 num 38,過程就像 3 8 11,1 1 2。由於 2 只有1個數字,所以返回它。高階 你可以不用任何的迴圈或者遞迴演算法,在 o 1 的時間內解決這個問題麼?思路 巢狀兩次迴圈即可 usr bin env py...