Loading

1. 数组之差TapeEquilibrium Minimize the value |(A[0] + ... + A[P-1]) - (A[P] + ... + A[N-1])|.

数组之差

 

package com.code;

public class Test03_3 {
     public static int solution(int[] A) {
         int size = A.length;
         if (size<2){
             return -1;
         }
         int [] rightSum = new int[size];
         rightSum[size-1] = A[size-1];
         for(int i=size-2;i>=0;i--){
             rightSum[i] = A[i]+rightSum[i+1];
         }
         int [] leftSum = new int[size];
         leftSum[0] = A[0];
         for(int i=1;i<size-1;i++){
             leftSum[i] = A[i]+leftSum[i-1];
         }
         int min = 2147483647;
         for(int i=0;i<size-1;i++){
             min = Math.min(min, Math.abs(leftSum[i]-rightSum[i+1]));
         }
         return min;
     }
    public static void main(String[] args) {
        int a [] = {3,1,2,4,3};
        System.out.println(solution(a));
        int b[] = {1,3};
        System.out.println(solution(b));
    }
}

/**

A non-empty zero-indexed array A consisting of N integers is given. Array A represents numbers on a tape.

Any integer P, such that 0 < P < N, splits this tape into two non-empty parts: A[0], A[1], ..., A[P − 1] and A[P], A[P + 1], ..., A[N − 1].

The difference between the two parts is the value of: |(A[0] + A[1] + ... + A[P − 1]) − (A[P] + A[P + 1] + ... + A[N − 1])|

In other words, it is the absolute difference between the sum of the first part and the sum of the second part.

For example, consider array A such that:

  A[0] = 3
  A[1] = 1
  A[2] = 2
  A[3] = 4
  A[4] = 3
We can split this tape in four places:

P = 1, difference = |3 − 10| = 7 
P = 2, difference = |4 − 9| = 5 
P = 3, difference = |6 − 7| = 1 
P = 4, difference = |10 − 3| = 7 
Write a function:

class Solution { public int solution(int[] A); }

that, given a non-empty zero-indexed array A of N integers, returns the minimal difference that can be achieved.

For example, given:

  A[0] = 3
  A[1] = 1
  A[2] = 2
  A[3] = 4
  A[4] = 3
the function should return 1, as explained above.

Assume that:

N is an integer within the range [2..100,000];
each element of array A is an integer within the range [−1,000..1,000].
Complexity:

expected worst-case time complexity is O(N);
expected worst-case space complexity is O(N), beyond input storage (not counting the storage required for input arguments).
Elements of input arrays can be modified.
*/

 

posted @ 2017-02-20 13:41  stono  阅读(454)  评论(0编辑  收藏  举报