J'essaie de comprendre comment gagner du temps dans ma solution de codage.
J'ai une fonction appelée tripletSum
qui prend deux paramètres x
y a
donde x
est un nombre et a
est un tableau.
Cette fonction est censée renvoyer true
si la liste a
contient trois éléments dont la somme est égale au nombre x
sinon il doit renvoyer false
.
J'ai créé la solution suivante :
function tripletSum(x, a) {
for(var i = 0; i < a.length; i++) {
for(var j = i + 1; j < a.length; j++) {
for(var k = j + 1; k < a.length; k++) {
if((a[i] + a[j] + a[k]) === x) {
return true;
}
}
}
}
return false;
}
Mais cela ne semble pas être la meilleure pratique. Actuellement, le temps nécessaire pour exécuter cette fonction est de O(n^3)
si je ne me trompe pas et je pense qu'il peut être amélioré pour avoir une complexité temporelle de O(n^2)
.
Comment puis-je modifier ce code pour qu'il fasse cela ?
Edita: Il ne s'agit pas d'un doublon de l'autre question car je demandais une amélioration spécifique de mon exemple actuel en JavaScript, ce qui n'est pas ce qui était demandé dans la question marquée comme doublon.