平衡点:比如int numbers[]={1,3,5,7,8,25,4,20}; 25前面的总和为24,25后面的总和也是24,25这个点就是平衡点。假如一个数组中的元素,其前面的部分等于后面的部分,那么这个点的位序就是平衡点,要求返回任何一个平衡点。
int findBalanceNum(int arr[], int length) { int *left = new int[length]; int *right = new int[length]; for(int i = 0; i < length; i++) { if(i == 0) { left[i] = 0; }else { left[i] = left[i - 1] + arr[i - 1]; } } for(int j = length - 1; j >=0; j--) { if(j == length - 1) { right[j] = 0; }else { right[j] = right[j + 1] + arr[j + 1]; } if(right[j] == left[j]) { return j; } } return -1; }
浙公网安备 33010602011771号