一、题目描述
给定一个整数数组 A
,只有我们可以将其划分为三个和相等的非空部分时才返回 true
,否则返回 false
。
形式上,如果我们可以找出索引 i+1 < j
且满足 (A[0] + A[1] + ... + A[i] == A[i+1] + A[i+2] + ... + A[j-1] == A[j] + A[j-1] + ... + A[A.length - 1])
就可以将数组三等分。
示例 1:
1 | 输出:[0,2,1,-6,6,-7,9,1,2,0,1] |
示例 2:
1 | 输入:[0,2,1,-6,6,7,9,-1,2,0,1] |
示例 3:
1 | 输入:[3,3,6,5,-2,2,5,1,-9,4] |
提示:
3 <= A.length <= 50000
-10000 <= A[i] <= 10000
二、题解
1.算法描述
- 双指针
2.个人分析
- 双指针向数组中间遍历,如果头尾指针遍历的累加都等于整个数组和的1/3,则判断头尾指针之间元素的累加是否等于数组的1/3即可
3.代码
1 | int summ(int *A, int a, int b) |