Justin

1249. Minimum Remove to Make Valid Parentheses

題目連結: Minimum Remove to Make Valid Parentheses 題目描述 給定一個字串 s,其包含英文字母和括號 (、),請移除字串中最少數量的括號,使該字串中的所有括號排列都是「合法」的。 「合法」的定義如下: * 空字串為合法。 * 若 A 與 B 為合法字串,則 AB(A 接 B)也是合法字串。 * 若 A 為合法字串,則

[Rust] Arc 與 Box:所有權模型的比較

在 Rust 中,Arc(原子引用計數)和 Box 是兩種常用的智能指標型別,各自針對不同的記憶體管理場景提供了優化方案。Box 提供單一所有權的 heap allocation,而 Arc 則透過原子操作實現了跨執行緒安全共享的引用計數。根據 Rust 的所有權模型,Box 適用於需要在 heap 上配置固定大小資料的情況,而 Arc 允許多個執行緒同時持有對同一資料的不可變引用。選擇使用哪種智能指標取決於特定的並行需求和性能考量。 使用 Box 進行 heap allocation Box

958. Check Completeness of a Binary Tree

題目連結: 958. Check Completeness of a Binary Tree 題目描述 給定一個二元樹,請判斷它是否是一個完全二元樹。 * 完全二元樹的定義是:除了最後一層之外,每一層的節點都達到最大數量,且最後一層的節點都盡可能地靠左排列。 限制條件 * 樹中節點的數量範圍為 [1, 100]。 * 1 <= Node.val <= 1000 解題思路 為了判斷一個二元樹是否為完全二元樹,我們需要確認以下兩點: 1. 除了最後一層之外,所有層級的節點數都達到最大值。 2. 最後一層的節點必須從左到右連續排列,

904. Fruit Into Baskets

題目連結: 904. Fruit Into Baskets 題目描述 在一排果樹中,每棵樹上都有一種水果,編號為 fruits[i]。你有兩個籃子,每個籃子只能放一種水果,但每個籃子可以放無限多個該種水果。 你可以從果樹的任意位置開始採摘,但一旦開始,就必須一直往前,不能回頭。你需要找到一段最長的連續子陣列,使得其中包含的水果種類不超過兩種,並返回該子陣列的長度。 限制條件: * 1 <= fruits.length <= 10^5 * 0 <= fruits[i]

[Rust] 深入理解 Rust 的模組系統與可見性

Rust 的模組系統提供了強大的工具來控制程式碼的組織和可見性。透過正確地運用模組、可見性修飾符和匯入語句,開發者可以建立結構清晰、封裝性強且易於維護的程式碼。本篇文章將深入探討 Rust 的模組系統,並說明如何使用 pub、pub(crate)、self、super 和 pub use 等關鍵字來控制可見性和匯入行為。 理解 Rust 的模組系統 預設可見性 在 Rust 中,所有項目(函式、結構體、列舉等)預設都是私有的,這意味著它們只能在定義它們的模組及其子模組中存取。若要讓項目在其模組外部可存取,