CodeSprout程式萌芽
困難第 86 題 · 樣本編輯日誌
CodeSprout 官方2026/10/04 00:19
官方解答 · 置頂Python

官方解答|樣本編輯日誌

官方解答

Python #86:樣本編輯日誌

解題規則

樣本整理工具會連續執行兩次編輯,請保存每一步的結果供記錄員核對。

複製輸入清單後依序執行兩步。第一步:在末尾加上當時的格數;第二步:在最前加上當時的總和。第二步使用第一步處理完的清單。回傳 [第一步完成時的獨立快照, 第二步完成時的清單],之後的修改不能影響第一份快照。

處理步驟

複製輸入,依第一步規則建立 first,再以 first 計算 second;回傳兩份獨立清單快照。

為何正確

程式只讀取原輸入,不做原地修改。切片、串接或排序依指定規則產生結果;多步驟的第二步使用第一步結果,而摘要讀取題目指定的清單,因此順序、快照與統計來源一致。

邊界與注意事項

本題輸入範圍:清單長度 0~12;每個值為 -100~100 的整數。 除題目指定的篩選或移除外,保留原資料的重複項與順序;使用切片或明確判斷安全處理允許的空資料。

範例追蹤

依參數順序 values 傳入 [[3,-2,0,5,-2]]。關鍵中間資料為 current = [3, -2, 0, 5, -2];first = [3, -2, 0, 5, -2, 5];second = [9, 3, -2, 0, 5, -2, 5]。最後回傳 [[3, -2, 0, 5, -2, 5], [9, 3, -2, 0, 5, -2, 5]]。結果由 return 回傳,不使用 print。

複雜度

設輸入及必要輸出的總大小為 n;複製、轉換或掃描最壞時間 O(n),保存中間資料與回傳結果最壞需要 O(n) 空間。

CodeSprout 官方解答 · 題意分析、解題步驟與完整參考程式

def solve(values):
    current = list(values)
    first = current + [len(current)]
    second = [sum(first)] + first
    return [list(first), list(second)]

留言討論 0