CodeSprout程式萌芽
簡單第 440 題 · 讀值狀態盒
CodeSprout 官方2026/10/04 00:19
官方解答 · 置頂Python

官方解答|讀值狀態盒

官方解答

Python #440:讀值狀態盒

解題規則

模擬器將一個整數讀值放進狀態盒,再依另一個整數欄位更新狀態。

建立 Counter 類別,在 init 保存初始值 initial 與目前值 value。solve 用 first 建立物件,再把 second 當 amount 呼叫一次 adjust。adjust 將 value 更新成「目前 value 加上 amount」。report 回傳目前value減去初始值。

處理步驟

Counter 保存 initial 與 value;adjust 使用當時 value 和 amount 更新一次;report 以初值與新值形成指定摘要。

為何正確

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

邊界與注意事項

本題輸入範圍:兩數皆為 -100~100;如題目提到份數、除數或長度,會明確以 abs(...)+1 轉為正數。 除題目指定的篩選或移除外,保留原資料的重複項與順序;使用切片或明確判斷安全處理允許的空資料。 Python // 是向下取整;% 與它配對滿足被除數 = 商×除數 + 餘數,負數仍遵循此規則。 需要清單快照時另外複製,兩個物件的清單與計數彼此獨立。

範例追蹤

依參數順序 first, second 傳入 [-9,0]。關鍵中間資料為 counter = {'initial': -9, 'value': -9}。最後回傳 0。結果由 return 回傳,不使用 print。

複雜度

依本題有界的數字、日期範圍,執行固定次數運算,時間與額外空間為 O(1)。

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

class Counter:

    def __init__(self, initial):
        self.initial = initial
        self.value = initial

    def adjust(self, amount):
        self.value = self.value + amount

    def report(self):
        return self.value - self.initial

def solve(first, second):
    counter = Counter(first)
    counter.adjust(second)
    return counter.report()

留言討論 0