У меня есть массив натуральных чисел размера n и секретное число, равное сумме хотя бы одного (непрерывного) подмассива ненулевого размера.
Я могу запросить, если число больше или равно секретному номеру в O (1).
При использовании скользящего окна O (n), есть ли случаи, которые приведут к неправильному ответу?
<precalculations>
int lb = prefixSum[high-1]+1; //lower bound
int ub = prefixSum[high]; //upper bound
int lindex=0, rindex=1, test;
while (rindex < prefixSum.length && lb!= ub){
test= prefixSum[rindex]-prefixSum[lindex];
if(checkSecret(test)){
//larger or equal to secret, shrink window
ub = min(ub,test);
lindex++;
} else {
lb = max(lb, test);
rindex++;
}
}
return ub;