Thinking Process
三段和相等,代表 array sum 除以三就是每一段的 sum。因此 array sum 不是三的倍數可以先淘汰。
代表用 x 紀錄第一段 sum 可能的選擇有幾個,而 if(A[i] == t * 2) res += x;
順序在前面代表目前選擇的第二段就是當前的 A[i]
所代表的 prefix sum 區間,因此前面第一段 sum 有 x 種選擇。
固定了第一第二段,第三段 sum 就是第二段後面的全部,也因此 iterate 到 n - 2
就要停止,要不然沒有第三段可以選。
Code
Time Complexity: O(n), Space Complexity: O(n)
Source