我很快就会进行Codility测试。 我试图通过使用LONG而不是INT来在代码中找到修改以避免EXTREME LARGE NUMBERS ERROR ...但这不起作用。
是否有人尝试使用CODILITY演示测试并获得100?
我查看过以前的帖子,但没有解决这个特殊问题。
我的代码:复杂性O(N)......我仍然有94岁。
// you can also use includes for example:
// #include <algorithm>
#include<iostream>
#include<vector>
#include<math.h>
int equi ( const vector<int> &A ) {
if((int)A.size()==0)
return -1;
long int sum_l = A[0];
long int total_sum =0;
for(int i =0; i<(int)A.size();i++){
total_sum = total_sum + A[i];
}
int flag =0;
total_sum = total_sum -A[0];
if(total_sum == 0)
return 0;
for(int i=1; i<(int)A.size()-1;i++){
total_sum = total_sum - A[i];
if(sum_l ==total_sum){
flag=1;
return i;
}
sum_l= sum_l + A[i];
}
if(sum_l ==0)
return (int)A.size()-1;
if(flag ==0)
return -1;
}
答案 0 :(得分:2)
我使用long long
,我没有问题。
答案 1 :(得分:1)
尝试这个。
int left = A[0];
int right = 0;
for(int i: A){
right += i;
}
right -= left;
int diff = Math.abs(left - right);
for (int i = 1; i < A.length-1; i++) {
left += A[i];
right -= A[i];
int a = Math.abs(left - right);
if(diff > a){
diff = a;
}
}
return diff;