Maison > Article > interface Web > Leetcode #Mémoize
Étant donné une fonction fn, renvoie une version mémoisée de cette fonction.
Une fonction mémoisée est une fonction qui ne sera jamais appelée deux fois avec les mêmes entrées. Au lieu de cela, il renverra une valeur mise en cache.
Vous pouvez supposer qu'il existe 3 fonctions d'entrée possibles : somme, fib et factorielle.
sum accepte deux entiers a et b et renvoie a b. Supposons que si une valeur a déjà été mise en cache pour les arguments (b, a) où a != b, elle ne peut pas être utilisée pour les arguments (a, b). Par exemple, si les arguments sont (3, 2) et (2, 3), deux appels distincts doivent être effectués.
fib accepte un seul entier n et renvoie 1 si n <= 1 ou fib(n - 1) fib(n - 2) sinon.
factorial accepte un seul entier n et renvoie 1 si n <= 1 ou factorial(n - 1) * n sinon.
Exemple 1 :
Entrée :
fnName = "sum" actions = ["call","call","getCallCount","call","getCallCount"] values = [[2,2],[2,2],[],[1,2],[]]
Sortie : [4,4,1,3,2]
Explication :
const sum = (a, b) => a + b; const memoizedSum = memoize(sum); memoizedSum(2, 2); // "call" - returns 4. sum() was called as (2, 2) was not seen before. memoizedSum(2, 2); // "call" - returns 4. However sum() was not called because the same inputs were seen before. // "getCallCount" - total call count: 1 memoizedSum(1, 2); // "call" - returns 3. sum() was called as (1, 2) was not seen before. // "getCallCount" - total call count: 2 </p> <p><strong>Exemple 2 :</strong></p> <p><strong>Entrée :</strong><br> </p> <pre class="brush:php;toolbar:false">fnName = "factorial" actions = ["call","call","call","getCallCount","call","getCallCount"] values = [[2],[3],[2],[],[3],[]]
Sortie : [2,6,2,2,6,2]
Explication :
const factorial = (n) => (n <= 1) ? 1 : (n * factorial(n - 1)); const memoFactorial = memoize(factorial); memoFactorial(2); // "call" - returns 2. memoFactorial(3); // "call" - returns 6. memoFactorial(2); // "call" - returns 2. However factorial was not called because 2 was seen before. // "getCallCount" - total call count: 2 memoFactorial(3); // "call" - returns 6. However factorial was not called because 3 was seen before. // "getCallCount" - total call count: 2
Exemple 3 :
Entrée :
fnName = "fib" actions = ["call","getCallCount"] values = [[5],[]]
Sortie : [8,1]
Explication :
fib(5) = 8 // "call" // "getCallCount" - total call count: 1
Contraintes :
> 0 <= a, b <= 105 > 1 <= n <= 10 > 0 <= actions.length <= 105 > actions.length === values.length
actions[i] est l'une des "appels" et "getCallCount"
fnName est l'un des éléments suivants : "somme", "factorielle" et "fib"
Alors que vous continuez à développer et à optimiser vos applications JavaScript, n'oubliez pas le pouvoir de la mémorisation. En identifiant les bonnes fonctions à mémoriser et en mettant en œuvre les stratégies de mise en cache appropriées, vous pouvez débloquer des gains de performances significatifs et créer une expérience utilisateur plus fluide et plus réactive pour vos clients.
J'espère que cet article vous aidera. Si vous aimez l'article, laissez un like et n'hésitez pas à laisser vos préoccupations dans la section commentaires. C'est tout pour aujourd'hui.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!