Heim >Web-Frontend >js-Tutorial >Leetcode #Memoize
Geben Sie bei einer gegebenen Funktion fn eine auswendig gelernte Version dieser Funktion zurück.
Eine auswendig gelernte Funktion ist eine Funktion, die niemals zweimal mit denselben Eingaben aufgerufen wird. Stattdessen wird ein zwischengespeicherter Wert zurückgegeben.
Sie können davon ausgehen, dass es drei mögliche Eingabefunktionen gibt: Summe, Fib und Fakultät.
sum akzeptiert zwei Ganzzahlen a und b und gibt a b zurück. Nehmen Sie an, dass ein Wert, der bereits für die Argumente (b, a) mit a != b zwischengespeichert wurde, nicht für die Argumente (a, b) verwendet werden kann. Wenn die Argumente beispielsweise (3, 2) und (2, 3) lauten, sollten zwei separate Aufrufe erfolgen.
fib akzeptiert eine einzelne ganze Zahl n und gibt 1 zurück, wenn n <= 1, andernfalls fib(n - 1) fib(n - 2).
Factorial akzeptiert eine einzelne Ganzzahl n und gibt 1 zurück, wenn n <= 1, andernfalls Factorial(n - 1) * n.
Beispiel 1:
Eingabe:
fnName = "sum" actions = ["call","call","getCallCount","call","getCallCount"] values = [[2,2],[2,2],[],[1,2],[]]
Ausgabe: [4,4,1,3,2]
Erklärung:
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>Beispiel 2:</strong></p> <p><strong>Eingabe:</strong><br> </p> <pre class="brush:php;toolbar:false">fnName = "factorial" actions = ["call","call","call","getCallCount","call","getCallCount"] values = [[2],[3],[2],[],[3],[]]
Ausgabe: [2,6,2,2,6,2]
Erklärung:
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
Beispiel 3:
Eingabe:
fnName = "fib" actions = ["call","getCallCount"] values = [[5],[]]
Ausgabe: [8,1]
Erklärung:
fib(5) = 8 // "call" // "getCallCount" - total call count: 1
Einschränkungen:
> 0 <= a, b <= 105 > 1 <= n <= 10 > 0 <= actions.length <= 105 > actions.length === values.length
actions[i] ist eine von „call“ und „getCallCount“
fnName ist einer von „sum“, „factorial“ und „fib“
Denken Sie bei der weiteren Entwicklung und Optimierung Ihrer JavaScript-Anwendungen an die Kraft des Auswendiglernens. Indem Sie die richtigen Funktionen zum Speichern identifizieren und die entsprechenden Caching-Strategien implementieren, können Sie erhebliche Leistungssteigerungen erzielen und Ihren Kunden ein nahtloseres und reaktionsfähigeres Benutzererlebnis bieten.
Ich hoffe, dieser Artikel hilft. Wenn Ihnen der Artikel gefällt, hinterlassen Sie bitte ein „Gefällt mir“ und hinterlassen Sie Ihre Bedenken gerne im Kommentarbereich. Das ist alles für heute.
Das obige ist der detaillierte Inhalt vonLeetcode #Memoize. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!