題目連結: Minimum Remove to Make Valid Parentheses
題目描述
給定一個字串 s,其包含英文字母和括號 (、),請移除字串中最少數量的括號,使該字串中的所有括號排列都是「合法」的。
「合法」的定義如下:
* 空字串為合法。
* 若 A 與 B 為合法字串,則 AB(A 接 B)也是合法字串。
* 若 A 為合法字串,則
在 Rust 中,Arc(原子引用計數)和 Box 是兩種常用的智能指標型別,各自針對不同的記憶體管理場景提供了優化方案。Box 提供單一所有權的 heap allocation,而 Arc 則透過原子操作實現了跨執行緒安全共享的引用計數。根據 Rust 的所有權模型,Box 適用於需要在 heap 上配置固定大小資料的情況,而 Arc 允許多個執行緒同時持有對同一資料的不可變引用。選擇使用哪種智能指標取決於特定的並行需求和性能考量。
使用 Box 進行 heap allocation
Box
題目連結: 958. Check Completeness of a Binary Tree
題目描述
給定一個二元樹,請判斷它是否是一個完全二元樹。
* 完全二元樹的定義是:除了最後一層之外,每一層的節點都達到最大數量,且最後一層的節點都盡可能地靠左排列。
限制條件
* 樹中節點的數量範圍為 [1, 100]。
* 1 <= Node.val <= 1000
解題思路
為了判斷一個二元樹是否為完全二元樹,我們需要確認以下兩點:
1. 除了最後一層之外,所有層級的節點數都達到最大值。
2. 最後一層的節點必須從左到右連續排列,
題目連結: 904. Fruit Into Baskets
題目描述
在一排果樹中,每棵樹上都有一種水果,編號為 fruits[i]。你有兩個籃子,每個籃子只能放一種水果,但每個籃子可以放無限多個該種水果。
你可以從果樹的任意位置開始採摘,但一旦開始,就必須一直往前,不能回頭。你需要找到一段最長的連續子陣列,使得其中包含的水果種類不超過兩種,並返回該子陣列的長度。
限制條件:
* 1 <= fruits.length <= 10^5
* 0 <= fruits[i]
Rust 的模組系統提供了強大的工具來控制程式碼的組織和可見性。透過正確地運用模組、可見性修飾符和匯入語句,開發者可以建立結構清晰、封裝性強且易於維護的程式碼。本篇文章將深入探討 Rust 的模組系統,並說明如何使用 pub、pub(crate)、self、super 和 pub use 等關鍵字來控制可見性和匯入行為。
理解 Rust 的模組系統
預設可見性
在 Rust 中,所有項目(函式、結構體、列舉等)預設都是私有的,這意味著它們只能在定義它們的模組及其子模組中存取。若要讓項目在其模組外部可存取,