2017年9月30日土曜日

TapeEquilibrium(Lesson3)

問題

コード1

public int solution(int A[]) {

    int diff = Integer.MAX_VALUE;
    int N = A.length;

    int left = 0;
    for (int i = 0; i < N - 1; i++) {
        left += A[i];

        int right = 0;
        for (int j = N - 1; j > i; j--) {
            right += A[j];
        }

        diff = Math.min(diff, Math.abs(left - right));
    }
    return diff;
}

コード2

  • コード1ではパフォーマンスが悪くTest scoreが100にならないので、以下で実施
public int solution(int A[]) {

    int diff = Integer.MAX_VALUE;
    int N = A.length;

    // 合計値
    int sum = 0;
    for (int i = 0; i < N; i++) {
        sum += A[i];
    }

    int left = 0;
    int right = sum;
    for (int i = 0; i < N - 1; i++) {
        left += A[i];
        right -= A[i];

        diff = Math.min(diff, Math.abs(left - right));

    }
    return diff;
}

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。