思路
因爲是戀曲切割,分爲三個子段。又考慮到子段的和相等,因此直接先算出子段的長度,然後分別從前和後對數組進行循環掃描計數,當前面子段的和等於子段長時推出循環,同理後面子段也如此操作。
代碼
class Solution {
public boolean canThreePartsEqualSum(int[] A) {
int left=A[0],right=A[A.length-1],sum=0;
for(int i=0;i<A.length;i++)
sum+=A[i];
int i=0,j=A.length-1;
while(left!=sum/3&&i<A.length-1){
left+=A[++i];
}
while(right!=sum/3&&j>1){
right+=A[--j];
}
//System.out.println(i+" "+j);
if(i>=j-1) return false;
return true;
}
}