mardi 26 juillet 2016

C++ - Maximize sum of two elements in the array and their indexes

How do I solve following programming riddle in O(N)?

Array of integers Tab[N]

Find max(Tab[K] - K + Tab[L] + L)

where 0 <= K <= L <= N

The only solution I can come up with is O(N^2) where I compare each element and update maximum sum.

int curr_max = INTEGER_MIN;
for(int i = 0; i < N; i++){
    for(int j = i; j < N; j++){
        curr_max = max(Tab[i]-i + Tab[j] + j,curr_max);
    }
}

Aucun commentaire:

Enregistrer un commentaire