🟢 Tier B・延伸組合技巧

清單索引與統計進階

M1-02 清單資料分析挑戰 M1-03 清單統計 M1-04 清單索引與位置

1什麼是清單索引與統計進階

你已經在前一個單元學會「走訪清單、找最大值、算總和」這些基本動作。這個單元要把這些基本動作組合、延伸成更貼近真實資料分析的問題:不只是「總和是多少」,而是「有幾筆資料符合某個條件」「這筆資料在清單的第幾個位置」「跟前一筆比起來是變多還變少」。

這個單元也會正式介紹「索引(Index)」這個概念——位置本身也是一種你可以查詢、計算、比較的資訊,不只是資料的值本身重要,資料「在哪裡」也同樣重要。這是你之後排序法(要交換兩個位置的資料)、二分搜尋(要回答「在第幾個位置」)都會用到的基礎能力。

55
72
88
40
61
位置(索引)從 1 開始算,第 3 個位置存的值是 88
🆕 補充圖解:每一格資料除了有「值」,還有一個固定的「位置」可以查詢新增

2核心概念,依課程題目的順序拆解

1

基本統計的複習與延伸

你要做的事:計算清單的總和、平均、最高分與最低分。這是 M0-05/M0-06 學過技巧的直接複習,作為這個單元的暖身。

清單總和(STA01-001)整數平均(STA01-002)最高分與最低分(STA01-003)

2

條件統計——算「符合條件的數量」,不是值本身

你要做的事:不再是找出最大值或總和,而是數有幾筆資料符合某個條件。例如:分數大於等於60為通過,計算通過人數與通過率(要用整數百分比);計算有幾個數字大於門檻K。做法是準備一個「計數器」(初始值0),走訪清單時,符合條件就+1。

通過率整數版(STA01-004)大於門檻的數量(CNT01-020)

⚠️ 常見誤區
通過率要用「通過人數 ÷ 總人數 × 100」再取整數,順序不能顛倒(不能先各自取整數再相除,會產生誤差)。
3

兩階段統計——第一次走訪算出一個統計量,第二次走訪才能用它

你要做的事:先計算整數平均,再計算有幾個數字大於這個平均。這一題沒辦法只走訪清單一次就做完:你必須先完整走訪一次清單算出平均值,等平均值確定了,才能開始第二次走訪、逐一比較每個數字跟平均的大小。
第 1 次走訪
算出平均值
→
第 2 次走訪
逐一比較大小
🆕 補充圖解:兩次走訪不能合併,因為第一次結束前,平均值還沒有確定新增

高於平均的數量(STA01-005)

⚠️ 常見誤區
想在同一次走訪中「邊算總和邊比較」——但走訪到清單中間時,你根本還不知道最終的平均值是多少,這一題一定要拆成「先求平均」「再統計」兩個獨立的迴圈,順序不能顛倒或合併。
4

多類別統計——不只兩種情況,而是分成好幾類分別計數

你要做的事:統計正數、負數與零各有幾個。這是概念2「條件計數」的延伸——需要準備三個計數器,每走訪一筆資料,判斷它屬於哪一類,就把對應的計數器+1。

正負零統計(STA01-006)

5

相鄰比較——不是拿資料跟固定門檻比,是跟「前一筆」比

你要做的事:
  • 「相鄰變化統計」(CNT01-024):統計有幾次比前一天增加、幾次比前一天減少、幾次相同
  • 「相鄰差值最大」(CNT01-023):找出相鄰兩個數字差值的最大值
  • 「相鄰相同的位置」(IDX01-006):找出第一組數值相同的相鄰位置
⚠️ 常見誤區
從第一筆資料就開始比較——第一筆資料沒有「前一筆」可以比,迴圈要從第二筆開始才能做相鄰比較,這是這一類題目共同的邊界情況。
6

反向走訪——不是從頭到尾,是從尾到頭

你要做的事:從清單最後一個數字往前讀取,並輸出反向讀取時的累加結果。走訪的方向可以是任意的,重點是累加器的更新邏輯不變,只是迴圈變數從N遞減到1,而不是從1遞增到N。

清單反向加總

7

直接用索引存取——「第P個是什麼」

你要做的事:給定位置P,直接輸出清單中第P個數字。這是「索引」概念最基本的操作——位置從1開始算,是這個單元(也是之後所有清單題目)共同的慣例,務必記熟。

指定位置的數字(IDX01-001)

8

找出某個值「第一次」或「最後一次」出現的位置

你要做的事:給定目標值X,找出X第一次出現的位置(若沒出現,輸出0);或是找出X最後一次出現的位置。做法是走訪清單,符合條件時記錄位置——差別在於:找第一次出現,找到就可以停止;找最後一次出現,要走訪到最後,每次符合都要覆蓋更新記錄的位置。

第一個目標位置(IDX01-003)最後一個目標位置(IDX01-004)

⚠️ 常見誤區(這一題組特別容易看漏)
「最大值的位置」(IDX01-005)要求的是「最大值第一次出現的位置」,但「最小值的位置」(IDX01-006原題)要求的卻是「最小值最後一次出現的位置」——同一份題組裡,兩題看起來很像,但「第一次」跟「最後一次」的要求剛好相反。這是這個單元最重要的提醒:題目的每一個字都要看清楚。
9

位置的應用——用位置去查詢周邊資訊

你要做的事:
  • 「左右鄰居總和」(IDX01-007):給定位置P,計算第P個數字左右鄰居的總和(若沒有左鄰居或右鄰居,該側視為0)
  • 「兩個目標的距離」(IDX01-008):找出A、B兩個目標值各自第一次出現的位置,計算兩個位置的距離
  • 「第一個及格的位置」(CNT01-022):概念8「找第一次符合條件的位置」的具體應用
10

綜合應用——把多個統計概念組合在同一題

你要做的事:「每日步數統計」(STA01-007)要求同時輸出總步數、平均步數、以及步數達標的天數——是概念1、3的組合演練。「班服投票」(TYTN-05)則是把概念2(條件計數)套用在「票數統計」情境,並多了平局判斷——這是統計類題目常見的延伸:算出結果後,還要考慮「有沒有平手」這種特殊情況。

3建議練習順序對照表

順序概念題目課程
1基本統計複習清單總和/整數平均/最高分與最低分M1-03
2條件計數通過率整數版/大於門檻的數量M1-03
3兩階段統計高於平均的數量(STA01-005)M1-03
4多類別統計正負零統計(STA01-006)M1-03
5相鄰比較相鄰變化統計/相鄰差值最大/相鄰相同的位置M1-03、M1-04
6反向走訪清單反向加總M1-03
7索引存取指定位置的數字(IDX01-001)M1-04
8找第一次/最後一次位置第一個目標位置/最後一個目標位置/最大值的位置/最小值的位置M1-04
9位置的應用左右鄰居總和/兩個目標的距離/第一個及格的位置M1-04
10綜合應用每日步數統計/班服投票M1-03、M1-02
🆕 本頁新增內容說明
以下視覺元素為 Cowork 潤飾時新增,MD 正本中沒有:① 索引概念圖解 ② 概念3的「兩階段走訪」流程圖。若確認保留,建議之後補進 MD 正本。