CodeSprout程式萌芽
簡單第 439 題 · 樣本資料盒
CodeSprout 官方2026/10/04 00:19
官方解答 · 置頂Python

官方解答|樣本資料盒

官方解答

Python #439:樣本資料盒

解題規則

實驗工具以物件保存一份樣本副本,請提供指定的資料檢視。

NumberBox 在初始化時複製 values 清單到自己的 values 屬性。report 回傳第一項,空清單時回傳None。不修改輸入清單。

處理步驟

NumberBox 初始化時複製 values;report 依題目從該副本取值、切片或統計。第一項、最後項、最大最小值在空資料時按規定回傳 None。

為何正確

物件屬性保存當前狀態;負責更新的方法依當時屬性完成一次更新與必要的快照,讀值步驟只讀取目前屬性。初始化及逐次更新維持題目指定的狀態,因此最後回傳的資料符合指定摘要。

邊界與注意事項

本題輸入範圍:長度0~12,每個數為 -100~100。物件須自行複製輸入清單,不修改呼叫者的原始清單。 除題目指定的篩選或移除外,保留原資料的重複項與順序;使用切片或明確判斷安全處理允許的空資料。 需要清單快照時另外複製,兩個物件的清單與計數彼此獨立。

範例追蹤

依參數順序 values 傳入 [[3,-2,0,5,-2]]。關鍵中間資料為 box = {'values': [3, -2, 0, 5, -2]}。最後回傳 3。結果由 return 回傳,不使用 print。

複雜度

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

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

class NumberBox:

    def __init__(self, values):
        self.values = list(values)

    def report(self):
        return self.values[0] if self.values else None

def solve(values):
    box = NumberBox(values)
    return box.report()

留言討論 0