AI & Data Dreamers練功房
寶箱片場規則
ALGO GATES・演算法關卡・中階・4 題

演算法中階・區間、堆疊與網格

這一頁是題幹試閱;登入/註冊後每題可以在瀏覽器裡執行、對答案,第一次交對 +10 XP。

  1. 01

    合併維護時段

    中等區間合併

    多個團隊各自登記了資料庫維護時段(分鐘,閉區間 [start, end])。只要兩個時段重疊或首尾相接(例如 [1,3] 和 [3,5]),就視為同一段。請合併所有時段。

    輸入:

    第 1 行:n

    接下來 n 行:start end

    輸出:合併後每段一行「start end」,依 start 由小到大。最後一行印「total 總分鐘數」,總分鐘數=各段 (end - start) 的和。

    範例輸入:

    3

    1 3

    2 6

    8 10

    範例輸出:

    1 6

    8 10

    total 7

    類型對應:LeetCode「Merge Intervals」類(情境與敘述為本平台改寫)。

    輸入請用 input() 逐行讀取(平台不支援 sys.stdin)。執行時平台會把每一行測資回顯在輸出最前面,這是正常的,不用自己印。本題在瀏覽器內以 Pyodide 執行,只用標準函式庫。先把全部輸入讀完再輸出,不要在迴圈裡邊讀邊印(回顯行會插進輸出中間,就對不上答案)。

    作答登入後可作答
  2. 02

    設定檔括號檢查

    中等堆疊

    部署前要檢查設定檔的括號是否成對。每行是一段設定字串,裡面除了括號 ()、[]、{} 之外還有其他字元(其他字元忽略)。

    輸入:

    第 1 行:n

    接下來 n 行:設定字串

    輸出:每行一個結果。括號全部正確成對印 OK;否則印「ERR 位置」,位置是第一個出錯的字元索引(從 0 起算):

    • 遇到右括號但對不上,就是該右括號的位置;
    • 字串結束還有沒關的左括號,位置是「最早那個沒關的左括號」。

    範例輸入:

    2

    a(b[c])

    x{y)

    範例輸出:

    OK

    ERR 3

    類型對應:LeetCode「Valid Parentheses」類(情境與敘述為本平台改寫)。

    輸入請用 input() 逐行讀取(平台不支援 sys.stdin)。執行時平台會把每一行測資回顯在輸出最前面,這是正常的,不用自己印。本題在瀏覽器內以 Pyodide 執行,只用標準函式庫。先把全部輸入讀完再輸出,不要在迴圈裡邊讀邊印(回顯行會插進輸出中間,就對不上答案)。

    作答登入後可作答
  3. 03

    套件版本比較

    中等字串解析

    升級套件前要比較版本號。版本號由點分隔的數字組成,各段依序比較數值大小(不是字串大小),前導零忽略("1.02" 等於 "1.2"),段數不足的視為 0("1.2" 等於 "1.2.0")。

    輸入:

    第 1 行:n

    接下來 n 行:兩個版本號,以空白分隔

    輸出:每行一個符號:前者較新印 >,較舊印 <,相同印 =。

    範例輸入:

    2

    1.0 1

    1.2 1.10

    範例輸出:

    =

    <

    類型對應:LeetCode「Compare Version Numbers」類(情境與敘述為本平台改寫)。

    輸入請用 input() 逐行讀取(平台不支援 sys.stdin)。執行時平台會把每一行測資回顯在輸出最前面,這是正常的,不用自己印。本題在瀏覽器內以 Pyodide 執行,只用標準函式庫。先把全部輸入讀完再輸出,不要在迴圈裡邊讀邊印(回顯行會插進輸出中間,就對不上答案)。

    作答登入後可作答
  4. 04

    機房故障區塊

    中等圖 BFS

    機房的機櫃排成 R × C 的網格,# 表示故障、. 表示正常。上下左右相鄰的故障機櫃算同一個故障區塊(斜對角不算)。

    輸入:

    第 1 行:R C

    接下來 R 行:每行 C 個字元

    輸出:兩行

    第 1 行:故障區塊數

    第 2 行:各區塊大小,由大到小以空白分隔(沒有故障則印空行)

    範例輸入:

    3 4

    #..#

    #...

    ..##

    範例輸出:

    3

    2 2 1

    類型對應:LeetCode「Number of Islands」類(情境與敘述為本平台改寫)。

    輸入請用 input() 逐行讀取(平台不支援 sys.stdin)。執行時平台會把每一行測資回顯在輸出最前面,這是正常的,不用自己印。本題在瀏覽器內以 Pyodide 執行,只用標準函式庫。先把全部輸入讀完再輸出,不要在迴圈裡邊讀邊印(回顯行會插進輸出中間,就對不上答案)。

    作答登入後可作答