Si. Denote con [matemática] f (i) [/ matemática] el índice más grande [matemática] j [/ matemática] tal que [matemática] A [i] + A [j] i [/ matemática] implica [matemática] f (j) <f (i) [/ matemática]). Tenga en cuenta que hay [math] f (i) +1 [/ math] pares que contienen i porque cada número menor que [math] f (i) [/ math] también funciona. Entonces la respuesta es solo [matemática] (\ sum_ {i = 0} ^ {N-1} f (i)) / 2 [/ matemática].
Usando el hecho de que [math] f [/ math] está disminuyendo, podemos calcular todos los [math] f (i) [/ math] en tiempo lineal. Inicie un puntero al final de la matriz y muévalo hacia adelante hasta que encuentre [math] f (0) [/ math]. Luego camine más hasta encontrar [math] f (1) [/ math]. Etc. Esto es [matemática] O (n) [/ matemática] porque solo pasamos por cada elemento una vez.
- ¿Cuál debería ser mi plan y enfoque si quiero trabajar con gigantes de alta tecnología como Facebook, Google, Oracle, etc.?
- Sé programar pero no soy bueno en eso. ¿Cómo debo manejar esto en una entrevista?
- Dada una matriz (N) de enteros, ¿cómo verifica si es posible obtener una suma de S, eligiendo algunos elementos (o cero) de la matriz y agregándolos?
- ¿Cuál es la mejor manera de prepararse para una entrevista de pasante técnico en una semana?
- ¿Cuándo fue tu primera entrevista? ¿Como le fue? ¿Qué aprendiste de esa experiencia? ¿Cómo te preparaste para la entrevista?