官方解答 · 置頂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
登入 後就能留言,一起討論不同的寫法。