标签:子串 arr false lc int Sum Partition sum Into
这题有个坑,就是如果采用L->R 单向统计和为sum/3的子串时会存在:
A,B,C,D,E 5个子串和都为sum/3,看似是false,但是通过重新切分,可以变为
AB1, B2CD1, D2E 来组合成三个子串和为sum/3,见case71.
/*
* @lc app=leetcode id=1013 lang=cpp
*
* [1013] Partition Array Into Three Parts With Equal Sum
*/
// @lc code=start
class Solution {
public:
bool canThreePartsEqualSum(vector<int>& arr) {
int N = arr.size();
int sum = 0;
for(int i=0;i<N;i++) sum += arr[i];
if(sum % 3 != 0) return false;
sum /= 3;
int i = 0, j = N-1 , t;
t = 0;
for(;i<N;i++){
t += arr[i];
if(t == sum){
break;
}
}
t = 0;
for(;j>=0;j--){
t += arr[j];
if(t == sum){
break;
}
}
if(i+1>=j) return false;
t = 0;
for(int k=i+1;k<j;k++){
t += arr[k];
}
if(t == sum) return true;
return false;
}
};
// @lc code=end
标签:子串,arr,false,lc,int,Sum,Partition,sum,Into 来源: https://blog.csdn.net/ShellDawn/article/details/120253062
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。