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

演算法初階・計數、線性掃描與二分搜尋

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

  1. 01

    最常見的事件代碼

    容易雜湊表

    使用者行為被編碼成一串大寫字母,每個字母代表一種事件。請找出出現次數最多的事件代碼與次數;次數相同時取字母序最小的。

    輸入:一行字串(只含大寫字母)

    輸出:一行「代碼 次數」。

    請用 dict 自己計數(練習雜湊表),不要用 collections.Counter。

    範例輸入:

    BAAB

    範例輸出:

    A 2

    類型對應:LeetCode「Majority Element/字元頻率」類(情境與敘述為本平台改寫)。

    輸入請用 input() 逐行讀取(平台不支援 sys.stdin)。執行時平台會把每一行測資回顯在輸出最前面,這是正常的,不用自己印。starter 已先把全部輸入讀進來,請保留這段,不要在迴圈裡邊讀邊印(回顯行會插進輸出中間,就對不上答案)。

    作答登入後可作答
  2. 02

    最大單日漲幅

    容易線性掃描

    給一支股票連續 n 天的收盤價,找出「單日漲幅(今天 − 昨天)」最大的那一天。若有多天一樣大,取最早的;如果每天都沒漲(漲幅都 ≤ 0),印 NO GAIN。

    輸入:

    第 1 行:n(n ≥ 2)

    第 2 行:n 個整數收盤價

    輸出:一行「第幾天 漲幅」,天數從 1 起算(第 1 天沒有前一天,不列入)。

    請只走訪一次,不要先算出全部漲幅再排序。

    範例輸入:

    4

    10 8 13 18

    範例輸出:

    3 5

    類型對應:LeetCode「Best Time to Buy and Sell Stock 的入門版」類(情境與敘述為本平台改寫)。

    輸入請用 input() 逐行讀取(平台不支援 sys.stdin)。執行時平台會把每一行測資回顯在輸出最前面,這是正常的,不用自己印。starter 已先把全部輸入讀進來,請保留這段,不要在迴圈裡邊讀邊印(回顯行會插進輸出中間,就對不上答案)。

    作答登入後可作答
  3. 03

    排序時間戳中的插入位置

    容易二分搜尋

    事件時間戳(整數秒)已由小到大排序。查詢時要找出「第一個 ≥ t 的位置」(從 0 起算);如果全部都比 t 小,答案是清單長度(也就是要插在最後)。

    輸入:

    第 1 行:已排序的時間戳(空白分隔)

    第 2 行:q 個查詢值 t(空白分隔)

    輸出:一行,每個查詢的位置,以空白分隔。

    請自己寫二分搜尋(不要用 bisect 模組,也不要一個一個比)。

    範例輸入:

    10 20 30

    20 25 5

    範例輸出:

    1 2 0

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

    輸入請用 input() 逐行讀取(平台不支援 sys.stdin)。執行時平台會把每一行測資回顯在輸出最前面,這是正常的,不用自己印。starter 已先把全部輸入讀進來,請保留這段,不要在迴圈裡邊讀邊印(回顯行會插進輸出中間,就對不上答案)。

    作答登入後可作答