↑看個小廣告,支持好內容↑
"C": 將前一局分數作廢"D": 將前一局分數乘以雙倍"+": 將前兩局分數相加
這三條規則有什麼共通點?它們都是從計分板的末端去取資料,我們至少得知道末兩項是什麼,分數才能往下更新:
// Case1: [3,1,D,+]
策略:先加上這局的分數,再去更新末兩項
3: sum=0+3=3, prev2=X, prev1=3
1: sum=3+1=4, prev2=3, prev1=1
D: sum=4+2=6, prev2=1, prev1=2 (D:前一局兩倍)
+: sum=6+3=9, prev2=2, prev1=3 (+:前兩局加總)
乍看之下可行,但萬一出現了 C 呢?末兩項也得跟著還原,可是變數已經更新,再往前的資料已無法溯回 ...
❶ Stack
計分板的寫入和移除都是發生在資料的末端,是時候讓 Stack 登場了!

後進者先出 (LIFO, Last-In-First-Out) 是 Stack 的特徵
Stack 可以透過陣列的 push()、pop() 來實現,照著規則建立計分板陣列,最後再將各局分數加總就可以了,再幫你複習一次迭代 XD
// acc:累積值、curr:陣列項
return arr.reduce((acc, curr)=>acc+curr, 0);
- 本題分類標籤:
Array、Stack、Simulation - 本題正解率=
75.2%




















