知識點:棧
從前向後遍歷字串,只考慮(
和)
:
那麼在遍歷過程中,棧中元素數量的最大值即為答案。棧中的(
可以理解為還沒遍歷到匹配的)
,即那些巢狀的(
。
class
solution
else
if(c ==
')')
anw =
max(anw, depth);}
return anw;}}
;
知識點:容斥設與點p
直接相連邊的數量為d(p
)d(p)
d(p)
。列舉所有點對(u,
v)(u,v)
(u,v
),其秩為
f (u
,v)=
d(u) + d(v) - 1, 存在邊[u,v] 或者 [v,u] \\ d(u) + d(v), 不存在邊[u,v] 或者 [v,u] \\ \end\right.
f(u,v)
=for
(int i =
0; i < n; i++)}
return anw;}}
;知識點:回文串
設字串長度為 l。如果 a,b 分割後可拼接為回文串,則必然存在n∈[
0,l)
n ∈ [0, l)
n∈[0,l
),滿足下述兩個要求:
[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-zrqp9wgj-1602415816433)(
可以先找出符合上述要求的最大的 n
,然後判斷剩下的長度為 l-2n 的中間部分
是否為回文串。
class
solution
l++; r--;}
return
true;}
bool
check
(const string &a,
const string &b)
else}if
(j-i <=2)
}// 從 b 中選取字首, 從 a 中選取字尾
for(
int i =
0, j = a.
size()
-1; i < j; i++
, j--)if
(j-i <=2)
}return
true;}
bool
checkpalindromeformation
(string a, string b)
};
知識點:狀態壓縮,樹的遍歷首先,借助狀態壓縮的技巧,列舉點的子集s
。其次,檢查s
是否可以組成一顆子樹。最後,計算s
對應子樹的直徑,即城市之間的最大距離。
[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-mnqdtf49-1602415816435)(
class
solution
for(
auto c : vec[s])if
(getpath
(c, s, t, path))}
return
false;}
intgetdis
(int s,
int t,
int status)
}return path.
size()
;}intget
(int n,
int status)
for(
int j = i+
1, bj = bi<<
1; j <= n; j++
, bj <<=1)
// 獲取 (i,j)之間的路徑長度,並判斷路徑上的點是否都在該點集內。
int tmpdis =
getdis
(i, j, status)
;// tmpdis 不超過 0,說明status不能構成一棵子樹
if(tmpdis <=0)
maxdis =
max(maxdis, tmpdis);}
}return maxdis;
} vector<
int>
countsubgraphsforeachdiameter
(int n, vector
int>>
& edges)
// 初始化答案
anw.
resize
(n-1);
//因為至少應該包含兩個點,所以從 3 開始列舉
LeetCode第210場周賽解題報告
賽況 共四題,完成三題。第一題一遍過,第二題因為陣列開錯位置尷尬了一段時間,第三題先打了個模擬,然後突然想出正解,簡單debug幾次後通過。前面debug時間有點久,第四題沒來得及看,於是放棄了。題目 2.1 括號的最大巢狀深度 如果字串滿足一下條件之一,則可以稱之為 有效括號字串 valid pa...
leetcode 第132場周賽
愛麗絲和鮑勃一起玩遊戲,他們輪流行動。愛麗絲先手開局。最初,黑板上有乙個數字n。在每個玩家的回合,玩家需要執行以下操作 如果玩家無法執行這些操作,就會輸掉遊戲。只有在愛麗絲在遊戲中取得勝利時才返回true,否則返回false。假設兩個玩家都以最佳狀態參與遊戲。示例 1 輸入 2輸出 true解釋 愛...
leetcode周賽 第176場
題目描述 給你乙個 m n 的矩陣 grid,矩陣中的元素無論是按行還是按列,都以非遞增順序排列。請你統計並返回 grid 中 負數 的數目。示例 1 輸入 grid 4,3,2,1 3,2,1,1 1,1,1,2 1,1,2,3 輸出 8 解釋 矩陣中共有 8 個負數。示例 2 輸入 grid 3...