LeetCode 🟢 3038. Maximum Number of Operations With the Same Score I
🔗 🟢 3038. Maximum Number of Operations With the Same Score I 1202
tags: Biweekly Contest 124
模擬(Simulation)
題意
給定一個整數陣列 ,如果 至少 包含 個元素,你可以執行以下操作:
- 選擇 中的 前兩個 元素並刪除它們,該次操作的分數為被刪除元素的和。
你的任務是找到可以執行的最大操作次數,使所有操作的得分相同,返回滿足上述條件的最大操作次數。
約束條件
思路:模擬(Simulation)
題目確保了 至少包含 個元素,因此可以先計算它們的和作為初始的目標得分。之後每次遍歷陣列的兩個元素,按照題意模擬即可。
複雜度分析
- 時間複雜度:,其中 是陣列 的長度。
- 空間複雜度:
寫法一
賽時寫法,比較直觀。
使用 變數來記錄前兩個元素的和, 變數紀錄操作次數,初始化為 ,表示最大操作次數至少為 。然後從 開始,每次檢查兩個元素的和是否等於 ,如果是則操作次數加一,否則跳出迴圈。
若從 開始,由於每次要檢查 和 兩個元素,因此需要檢查 是否超出範圍;也可以從 開始,每次檢查 和 ,這樣就不會有超出範圍的問題。
1 | class Solution: |
1 | class Solution { |
寫法二:省略 ans 變數
靈神提供的解法,省略了變數 ,直接用下標 來計算操作次數,優美且簡潔。
從 開始,每次檢查該元素與前面一個元素的和是否等於 ,如果不是則直接返回 ,否則繼續檢查下一對元素,直到結束,返回 。
1 | class Solution: |
1 | class Solution { |
參考資料
寫在最後
Cover photo is generated by @たろたろ, thanks for their work!
把半成品的文章丟給 LLM 補全,比完全讓他自己寫的效果好多了,能夠確保結果的一致性,但還是需要自己補充和修改一些地方。
你的目的是為一道演算法題撰寫一份題解(解題報告),以下是題解的一部份,包含了程式碼,請你閱讀程式碼後,給出對應的思路,並針對 <++> 的部分加上說明。
本部落格所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 十六個天亮!
評論
WalineGiscus