Letcode #Memoize

Patricia Arquette
Lepaskan: 2024-10-02 06:43:30
asal
491 orang telah melayarinya

Memandangkan fungsi fn, kembalikan versi dihafal bagi fungsi itu.

Fungsi dihafal ialah fungsi yang tidak akan dipanggil dua kali dengan input yang sama. Sebaliknya ia akan mengembalikan nilai cache.

Anda boleh menganggap terdapat 3 kemungkinan fungsi input: jumlah, fib dan faktorial.

jumlah menerima dua integer a dan b dan mengembalikan a b. Andaikan bahawa jika nilai telah dicache untuk argumen (b, a) di mana a != b, ia tidak boleh digunakan untuk argumen (a, b). Contohnya, jika hujahnya ialah (3, 2) dan (2, 3), dua panggilan berasingan harus dibuat.
fib menerima integer tunggal n dan mengembalikan 1 jika n <= 1 atau fib(n - 1) fib(n - 2) sebaliknya.
faktorial menerima integer tunggal n dan mengembalikan 1 jika n <= 1 atau faktorial(n - 1) * n sebaliknya.

Contoh 1:

Input:

fnName = "sum"
actions = ["call","call","getCallCount","call","getCallCount"]
values = [[2,2],[2,2],[],[1,2],[]]
Salin selepas log masuk

Output: [4,4,1,3,2]
Penjelasan:

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>Contoh 2:</strong></p>

<p><strong>Input:</strong><br>
</p>

<pre class="brush:php;toolbar:false">fnName = "factorial"
actions = ["call","call","call","getCallCount","call","getCallCount"]
values = [[2],[3],[2],[],[3],[]]
Salin selepas log masuk

Output: [2,6,2,2,6,2]
Penjelasan:

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
Salin selepas log masuk

Contoh 3:

Input:

fnName = "fib"
actions = ["call","getCallCount"]
values = [[5],[]]
Salin selepas log masuk

Output: [8,1]
Penjelasan:

fib(5) = 8 // "call"
// "getCallCount" - total call count: 1
Salin selepas log masuk

Kekangan:

> 0 <= a, b <= 105
> 1 <= n <= 10
> 0 <= actions.length <= 105
> actions.length === values.length
Salin selepas log masuk

tindakan[i] ialah salah satu daripada "panggilan" dan "getCallCount"
fnName ialah salah satu daripada "jumlah", "faktorial" dan "fib"

Penyelesaian

Leetcode #Memoize

Sambil anda terus membangunkan dan mengoptimumkan aplikasi JavaScript anda, ingat kuasa penghafalan. Dengan mengenal pasti fungsi yang betul untuk menghafal dan melaksanakan strategi caching yang sesuai, anda boleh membuka kunci keuntungan prestasi yang ketara dan mencipta pengalaman pengguna yang lebih lancar dan responsif untuk pelanggan anda.

Saya harap artikel ini membantu. Jika anda menyukai artikel tersebut, sila tinggalkan suka dan jangan ragu untuk meninggalkan sebarang kebimbangan di bahagian komen. Itu sahaja untuk hari ini.

Atas ialah kandungan terperinci Letcode #Memoize. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!