尋找平衡點問題
阿新 • • 發佈:2019-01-05
平衡點:比如int numbers[]={1,3,5,7,8,25,4,20}; 25前面的總和為24,25後面的總和也是24,25這個點就是平衡點。假如一個數組中的元素,其前面的部分等於後面的部分,那麼這個點的位序就是平衡點,要求返回任何一個平衡點。
int calcBalance(int arr[], int length) { int *left = new int[length]; //left[i]為從第0個到第i-1個的和 int *right = new int[length]; //right[i]為從第i+1個到第len-1個的和 int b = length-1; for(int i=0; i<length; i++) { if(i == 0) left[i] = 0; else left[i] = left[i-1]+arr[i-1]; } for(; b>=0; b--) { if(b == length-1) right[b] = 0; else right[b] = right[b+1]+arr[b+1]; if(left[b] == right[b]) { delete[] left; delete[] right; return b; } } delete[] left; delete[] right; return -1; }