演算法中階・雙指標與滑動視窗
這一頁是題幹試閱;登入/註冊後每題可以在瀏覽器裡執行、對答案,第一次交對 +10 XP。
- 01
合併兩份已排序時間戳
中等雙指標兩台伺服器各自輸出一份「已由小到大排序」的事件時間戳(整數秒),兩份之間可能有相同的時間戳。請合併成一份由小到大、沒有重複的清單。
輸入:
第 1 行:A 的時間戳(空白分隔,已排序,可能為空行)
第 2 行:B 的時間戳(空白分隔,已排序,可能為空行)
輸出:一行,合併去重後的時間戳,以空白分隔。
要求:用雙指標一次走完,不要直接 sorted(set(A + B))。
範例輸入:
1 3 5
2 3 6
範例輸出:
1 2 3 5 6
類型對應:LeetCode「Merge Sorted Array」類(情境與敘述為本平台改寫)。
輸入請用 input() 逐行讀取(平台不支援 sys.stdin)。執行時平台會把每一行測資回顯在輸出最前面,這是正常的,不用自己印。本題在瀏覽器內以 Pyodide 執行,只用標準函式庫。先把全部輸入讀完再輸出,不要在迴圈裡邊讀邊印(回顯行會插進輸出中間,就對不上答案)。
作答登入後可作答 - 02
最長不重複事件段
中等滑動視窗使用者行為被編碼成一個字串,每個字元代表一種事件。請找出「不含重複事件」的最長連續片段。
輸入:一行字串(只含英文字母)
輸出:兩行
第 1 行:最長長度
第 2 行:該片段本身(若有多個同樣長的片段,取最早出現的)
範例輸入:
abcabcbb
範例輸出:
3
abc
類型對應:LeetCode「Longest Substring Without Repeating Characters」類(情境與敘述為本平台改寫)。
輸入請用 input() 逐行讀取(平台不支援 sys.stdin)。執行時平台會把每一行測資回顯在輸出最前面,這是正常的,不用自己印。本題在瀏覽器內以 Pyodide 執行,只用標準函式庫。先把全部輸入讀完再輸出,不要在迴圈裡邊讀邊印(回顯行會插進輸出中間,就對不上答案)。
作答登入後可作答 - 03
尖峰 k 分鐘請求量
中等滑動視窗監控系統每分鐘記錄一次請求數。容量規劃要知道「連續 k 分鐘」請求總和最大是多少、從第幾分鐘開始。
輸入:
第 1 行:n k
第 2 行:n 個整數,第 i 個是第 i 分鐘(從 0 起算)的請求數
輸出:一行「起始分鐘 最大總和」。若有多段同樣大,取起始分鐘最小的。
要求 O(n):視窗往右移一格時,加上新進來的、減掉移出去的。
範例輸入:
5 2
1 4 2 6 1
範例輸出:
2 8
類型對應:LeetCode「Maximum Average Subarray I」類(情境與敘述為本平台改寫)。
輸入請用 input() 逐行讀取(平台不支援 sys.stdin)。執行時平台會把每一行測資回顯在輸出最前面,這是正常的,不用自己印。本題在瀏覽器內以 Pyodide 執行,只用標準函式庫。先把全部輸入讀完再輸出,不要在迴圈裡邊讀邊印(回顯行會插進輸出中間,就對不上答案)。
作答登入後可作答 - 04
最長連續簽到天數
中等雜湊集合學員簽到紀錄是一串「第幾天」的整數,沒有排序、可能重複。請找出最長的連續簽到天數,以及那段的起訖日。
輸入:一行,空白分隔的整數
輸出:一行「長度 起始日 結束日」。若有多段同樣長,取起始日最小的。
要求 O(n):不要先排序。
範例輸入:
100 4 200 1 3 2
範例輸出:
4 1 4
類型對應:LeetCode「Longest Consecutive Sequence」類(情境與敘述為本平台改寫)。
輸入請用 input() 逐行讀取(平台不支援 sys.stdin)。執行時平台會把每一行測資回顯在輸出最前面,這是正常的,不用自己印。本題在瀏覽器內以 Pyodide 執行,只用標準函式庫。先把全部輸入讀完再輸出,不要在迴圈裡邊讀邊印(回顯行會插進輸出中間,就對不上答案)。
作答登入後可作答

送件鴿飛出去了