Maison > interface Web > js tutoriel > le corps du texte

Leetcode #Mémoize

Patricia Arquette
Libérer: 2024-10-02 06:43:30
original
600 Les gens l'ont consulté

É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],[]]
Copier après la connexion

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],[]]
Copier après la connexion

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
Copier après la connexion

Exemple 3 :

Entrée :

fnName = "fib"
actions = ["call","getCallCount"]
values = [[5],[]]
Copier après la connexion

Sortie : [8,1]
Explication :

fib(5) = 8 // "call"
// "getCallCount" - total call count: 1
Copier après la connexion

Contraintes :

> 0 <= a, b <= 105
> 1 <= n <= 10
> 0 <= actions.length <= 105
> actions.length === values.length
Copier après la connexion

actions[i] est l'une des "appels" et "getCallCount"
fnName est l'un des éléments suivants : "somme", "factorielle" et "fib"

Solution

Leetcode #Memoize

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!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal