Memahami Corak Elemen K dalam LeetCode: Asas (Bahagian 1)
Nov 27, 2024 am 09:44 AMSaya akhirnya faham! Cara terbaik untuk mempelajari LeetCode bukanlah dengan menyelesaikan masalah demi masalah, kadangkala mengambil masa satu jam penuh untuk menyelesaikannya secara tidak cekap. Kunci untuk menguasai LeetCode ialah mempelajari corak. Mari kita kaji yang biasa!
Penemuduga suka bertanya tentang mencari, mengekalkan atau memanipulasi elemen K dalam rentetan atau tatasusunan. Pada mulanya, saya fikir setiap masalah adalah berbeza, tetapi kemudian saya mula melihat sambungannya. Biar saya tunjukkan kepada anda apa yang saya maksudkan dengan dua masalah yang benar-benar membantu saya memahami corak ini.
Masalah 1: Cari Susunan Panjang K dengan Jumlah Terbesar
Ini secara teknikalnya soalan peringkat 'mudah' (hanya ditanya oleh satu syarikat), tetapi, ia mengajar anda banyak tentang cara berfikir tentang masalah elemen k ini!
Apa Yang Mereka Tanya
Anda mendapat tatasusunan nombor dan nilai k, dan anda perlu mencari nombor k daripada tatasusunan yang menjumlahkan sehingga jumlah terbesar yang mungkin. TETAPI (dan inilah bahagian yang membuatkan saya tersandung pada mulanya), anda perlu mengekalkan nombor dalam susunan asalnya!
Contoh:
Oh! yang ini lebih rumit:
Ok saya faham
Pada mulanya, saya fikir "rebut sahaja nombor terbesar, selesai!" Tetapi tidak - keperluan pesanan itu mengubah segala-galanya. Inilah yang akhirnya diklik:
- Kita perlu ingat dari mana datangnya setiap nombor, bukan? Jadi Saya fikir, "Saya harus memasangkan setiap nombor dengannya jawatan?"
- Kemudian kita boleh mengisih pasangan ini mengikut nilai (iaitu nombor pertama dalam setiap pasangan), tetapi kami menjejakinya dari mana mereka datang (itu nombor kedua)!
- Sekarang bahagian yang menarik - kita hanya memerlukan k daripada ini, jadi ambil pasangan k pertama dan hanya kekalkan kedudukan mereka:
- Akhir sekali, berjalan melalui tatasusunan asal dan simpan sahaja nombor yang kedudukannya ada dalam Set kami:
Inilah Kodnya
2: Kth Elemen Terbesar dalam Strim
Ok, jadi yang ini juga dilabel 'mudah' (ditanya oleh lima syarikat), tetapi yang ini lebih mengelirukan saya daripada mana-mana masalah elemen Kth yang lebih sukar.
Apa Yang Mereka Tanya
Bayangkan anda bekerja di universiti dan pelajar terus menghantar markah ujian. Tugas anda adalah untuk sentiasa mengetahui markah tertinggi ke-1 pada bila-bila masa. Markah baharu terus masuk dan anda perlu menjejaki.
Mereka memberi anda k dan beberapa markah awal, kemudian mereka terus melemparkan markah baharu kepada anda dan ingin mengetahui kth tertinggi setiap kali. Mari lihat contoh:
Ok, saya rasa saya faham
Pada mulanya, saya terus mencuba untuk mengisih keseluruhan tatasusunan setiap kali skor baharu masuk tetapi saya tahu bahawa pengisihan mungkin tidak cekap. Kemudian saya terfikir mengapa saya menjejaki semua markah sedangkan saya hanya mementingkan k atas?
Begini cara saya memecahkannya:
- Mula-mula, susun markah awal dan hanya kekalkan k teratas:
- Kini apabila markah baharu masuk:
Jika lebih kecil daripada kth tertinggi kami (angka pertama), abaikan
Jika ia lebih besar, ia tergolong dalam senarai kami di suatu tempat
Berikut ialah perkara yang berlaku dengan setiap tambahan:
Kod
Mengapa Dua Masalah Ini Bersambung
Kedua-dua masalah mengajar saya sesuatu yang sangat penting tentang pengendalian elemen k:
- Masalah pertama: Kadangkala anda perlu menjejaki di mana elemen berasal dari
- Masalah kedua: Kadangkala anda hanya perlu menyimpan elemen k sekitar
Masalah k-elemen ini adalah tentang menjadi bijak dengan maklumat yang anda simpan dan apa yang anda buang.
Kali seterusnya kita akan melihat dua lagi masalah k-elemen yang membina idea ini. Saya harap pada akhirnya anda melihat corak dan jenis masalah ini kelihatan kurang menakutkan!
Atas ialah kandungan terperinci Memahami Corak Elemen K dalam LeetCode: Asas (Bahagian 1). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Artikel Panas

Alat panas Tag

Artikel Panas

Tag artikel panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Ganti aksara rentetan dalam javascript

jQuery mendapatkan padding/margin elemen

HTTP Debugging dengan Node dan HTTP-Console

Tutorial Persediaan API Carian Google Custom
