Me dieron un problema en una entrevista de trabajo, estoy tratando de resolverlo posteriormente
Se te ha dado una lista de N trades para alguna acción, necesitas determinar cuánto volumen para cada trade ejecutaría una estrategia ideal, siempre y cuando no puedas comprar ni vender más de K (=const) acciones. El algoritmo debería funcionar en O(N) y ser constante en memoria.
Es claro cómo resolver un problema así mediante programación dinámica (con memoria O(K) y complejidad O(N * K) = O(N)), pero el tiempo de ejecución en 1e5 trades es de aproximadamente un par de horas, aunque es necesario que funcione en un par de segundos. ¿Tal vez hay algunas optimizaciones para esa dinámica?
(fyi. $d[i][p] = max(d[i-1][p],\,\,\,\, d[i-1][p - \text{side_sign} * x] - \text{side_sign} \cdot x \cdot \text{trade['price']}$ $x \in [1, \text{ trade['amount']}])$, $\text{side_sign = (-1 if trade['side'] == 'short' else 1)}$)