題目描述:
設計一個停車場系統,包含三種車位:大型(big)、中型(medium)、小型(small)。初始化時給定每種車位的數量。每次有車要停時,呼叫 addCar(carType),如果該類型還有空位則停入並回傳 true,否則回傳 false。
解題思路:
這是一道簡單的設計題。用一個大小為 3 的陣列(或三個變數)記錄每種車位的剩餘數量。每次 addCar 時,檢查對應類型的剩餘數量是否大於 0,若是則減一並回傳 true,否則回傳 false。
注意 carType 從 1 開始(1=大、2=中、3=小),對應到陣列時需要偏移索引。
時間複雜度:O(1) — 每次 addCar 操作僅需常數時間的陣列存取和比較。
空間複雜度:O(1) — 只使用固定大小的陣列(3 個元素)。
1. Initialize array spots[3] with [big, medium, small]
2. addCar(carType):
a. index = carType - 1
b. If spots[index] > 0:
- spots[index] -= 1
- Return true
c. Return false使用三個獨立變數:直接用 big_, medium_, small_ 三個成員變數,在 addCar 中用 switch-case 判斷。程式碼更直觀但不夠簡潔。
使用 HashMap:用 unordered_map<int, int> 記錄每種類型的剩餘車位。適合車型種類不固定的擴展場景,但對本題三種固定類型來說是過度設計。