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

演算法中階・雜湊與計數

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

  1. 01

    對帳找兩筆

    中等雜湊表

    對帳時發現帳差了 target 元,懷疑是某兩筆交易被漏記。給一串交易金額,找出兩筆「不同位置」的交易,金額相加剛好等於 target。

    輸入:

    第 1 行:交易金額,以空白分隔的整數

    第 2 行:target

    輸出:符合的兩個索引(從 0 起算)「i j」,i < j。若有多組,取 j 最小的那組;j 相同時取 i 最小。找不到印 -1。

    要求時間複雜度 O(n)。

    範例輸入:

    300 500 200 700

    900

    範例輸出:

    2 3

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

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

    作答登入後可作答
  2. 02

    欄位名稱分群

    中等雜湊表

    兩個資料來源的欄位名稱字母順序被打亂了(例如 date 和 tade)。請把「由完全相同字母組成」的欄位名稱分在同一群。

    輸入:

    第 1 行:n

    接下來 n 行:每行一個欄位名稱(小寫英文)

    輸出:每群一行,群內名稱依字母排序後以空白分隔;各群依「群內第一個名稱」排序。

    範例輸入:

    4

    abc

    bca

    xy

    yx

    範例輸出:

    abc bca

    xy yx

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

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

    作答登入後可作答
  3. 03

    最常見的 k 個錯誤碼

    中等Top-K/堆積

    把一整天的錯誤碼收集起來,值班工程師只想先看最常出現的 k 種。

    輸入:

    第 1 行:k

    第 2 行:錯誤碼(空白分隔的字串)

    輸出:k 行「錯誤碼 次數」,依次數由多到少;次數相同時依錯誤碼字串由小到大。

    範例輸入:

    2

    x y x z y x

    範例輸出:

    x 3

    y 2

    類型對應:LeetCode「Top K Frequent Elements」類(情境與敘述為本平台改寫)。

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

    作答登入後可作答
  4. 04

    淨流量歸零的區段數

    中等前綴和+雜湊

    倉庫每小時記錄一次庫存淨變化量(正數入庫、負數出庫)。稽核想知道:有多少個「連續小時區段」的淨變化剛好等於 k。

    輸入:

    第 1 行:k

    第 2 行:每小時淨變化(空白分隔的整數,可能有負數)

    輸出:符合的區段數。

    要求 O(n):區段 [i, j] 的和 = prefix[j] - prefix[i-1]。

    範例輸入:

    2

    1 1 1

    範例輸出:

    2

    類型對應:LeetCode「Subarray Sum Equals K」類(情境與敘述為本平台改寫)。

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

    作答登入後可作答