Rumah > Artikel > hujung hadapan web > Memahami Corak Elemen K dalam LeetCode: Asas (Bahagian 1)
Saya 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.
Ini secara teknikalnya soalan peringkat 'mudah' (hanya ditanya oleh satu syarikat), tetapi, ia mengajar anda banyak tentang cara berfikir tentang masalah elemen k ini!
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:
Pada mulanya, saya fikir "rebut sahaja nombor terbesar, selesai!" Tetapi tidak - keperluan pesanan itu mengubah segala-galanya. Inilah yang akhirnya diklik:
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.
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:
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:
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:
Kedua-dua masalah mengajar saya sesuatu yang sangat penting tentang pengendalian elemen k:
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!