一直做梦的猫

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

平衡点:比如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;
}

 

posted on 2013-05-13 15:56  一直做梦的猫  阅读(277)  评论(0)    收藏  举报