最大最小差距
L2|進階EXT01-003看題目內容
- 輸入
- 第一個整數為 N,接著輸入 N 個整數。
- 輸出
- 輸出三個整數,依序為最大值、最小值、差距,中間以空白分隔。
輸入
5 8 3 12 7 10
12 3 9
找出一串資料中的最大值和最小值
找最大值就像打擂台:先讓一個人站上擂台當「目前的冠軍」,接下來每個挑戰者都上來比一比,比冠軍大就換他當冠軍。所有人都比完,站在台上的就是最大值。
最大值 設為 (初始值)
每讀到一個數字:
如果 數字 > 最大值:
最大值 設為 數字
說出 最大值
初始值要設多少? 有兩種常見做法:
| 做法 | 最大值的初始值 | 優點 | 要注意 |
|---|---|---|---|
| 用第一筆資料 | 第 1 個數字 | 一定正確 | 迴圈要從第 2 個開始比 |
| 用一個極端的數 | 例如 −999999 | 寫法簡單,迴圈從第 1 個開始 | 資料如果比這個數還小就會出錯 |
找最小值的方法完全一樣,只要把「>」換成「<」,極端的初始值換成很大的數(例如 999999)。
先讀題,再一步一步點開來看。建議每看完一步,就先自己在平台上試著寫寫看。
5 8 3 12 7 10
12
詢問並等待 → N
最大值 設為 −999999
重複 N 次:
詢問並等待 → 數字
如果 數字 > 最大值:
最大值 設為 數字
說出 最大值資料「8 3 12 7 10」:
| 讀到的數字 | 比最大值大嗎? | 最大值 |
|---|---|---|
| 開始前 | - | −999999 |
| 8 | 是 | 8 |
| 3 | 否 | 8 |
| 12 | 是 | 12 |
| 7 | 否 | 12 |
| 10 | 否 | 12 |
輸出 12。
按「載入範例」,範例答案用的是「極端的初始值」做法(−999999),所以不需要清單,邊讀邊比就可以。
照順序完成這些題目。寫完之後,可以在平台上按「載入範例」和自己的寫法比較。
5 8 3 12 7 10
12 3 9
1 88
88 88
6 5 8 3 12 7 10 2 5
12
核心題都會了嗎?這些題目需要把好幾個技巧組合起來,想挑戰的話可以試試看。
6 70 95 80 95 60 88
95 88
8 1 2 2 3 2 1 3 2
2
6 1 2 3 1 2 3
請重新投票
學完之後,檢查看看你能不能做到這些事。有做不到的,就回到上面對應的地方再看一次。