# 白板題技巧

[Reference](https://www.notion.so/explainthisio/3e4b134b13c04ff0b1383d5c369e3889?v=8346dfb3cb0740bcacc594c8d7469a71\&p=19f2d1d1de1880be9d0ee6ffa0f8eeb7\&pm=s)

#### 確認問題環節

輸入的長度、輸入的資料型態、甚至是題目本身的一些限制。

#### 跟面試官說大概會如何解

[**dry run + pseudo code**](https://www.notion.so/explainthisio/3e4b134b13c04ff0b1383d5c369e3889?v=8346dfb3cb0740bcacc594c8d7469a71\&p=06174fd6cccb4a8a8191c79276ccb249\&pm=s) 搭配分析這樣的時間複雜度與空間複雜度各別是多少



pseudo code

```
先把陣列中的第零個元素視為最大值
for 迴圈迭代過陣列:
  比較當前最大值與陣列中的元素
  如果當前值比較大，就更新最大值
回傳最大值
```

接著跟面試官提說「讓我用幾個實際案例，來確保這個偽代碼的演算法無誤」

以 \[5, 2, 9, 1, 7] 的話

#### dry run

```
初始最大值 = 5
比較 2 > 5? No → 最大值維持 5
比較 9 > 5? Yes → 最大值變成 9
比較 1 > 9? No → 最大值變維持 9
比較 7 > 9? No → 最大值變維持 9
最終的最大值為 9
```

#### 優化環節

