演算法初階・計數、線性掃描與二分搜尋
這一頁是題幹試閱;登入/註冊後每題可以在瀏覽器裡執行、對答案,第一次交對 +10 XP。
- 01
最常見的事件代碼
容易雜湊表使用者行為被編碼成一串大寫字母,每個字母代表一種事件。請找出出現次數最多的事件代碼與次數;次數相同時取字母序最小的。
輸入:一行字串(只含大寫字母)
輸出:一行「代碼 次數」。
請用 dict 自己計數(練習雜湊表),不要用 collections.Counter。
範例輸入:
BAAB
範例輸出:
A 2
類型對應:LeetCode「Majority Element/字元頻率」類(情境與敘述為本平台改寫)。
輸入請用 input() 逐行讀取(平台不支援 sys.stdin)。執行時平台會把每一行測資回顯在輸出最前面,這是正常的,不用自己印。starter 已先把全部輸入讀進來,請保留這段,不要在迴圈裡邊讀邊印(回顯行會插進輸出中間,就對不上答案)。
作答登入後可作答 - 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 已先把全部輸入讀進來,請保留這段,不要在迴圈裡邊讀邊印(回顯行會插進輸出中間,就對不上答案)。
作答登入後可作答 - 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 已先把全部輸入讀進來,請保留這段,不要在迴圈裡邊讀邊印(回顯行會插進輸出中間,就對不上答案)。
作答登入後可作答

送件鴿飛出去了