Rumah >hujung hadapan web >tutorial js >Berkongsi Penyelesaian Cabaran CodeWars: Paling Kecil, daripada Asas kepada Aris

Berkongsi Penyelesaian Cabaran CodeWars: Paling Kecil, daripada Asas kepada Aris

Susan Sarandon
Susan Sarandonasal
2024-12-21 07:09:09283semak imbas

Sharing Solusi Tantangan CodeWars: Least Larger, dari Dasar hingga aris

Belajar daripada Cabaran CodeWars: Paling Kecil

Hello, kawan-kawan! Kali ini saya ingin berkongsi tentang cabaran Least Larger daripada CodeWars. Cabaran ini benar-benar mengujakan kerana ia melatih logik dan pemikiran yang sistematik, serta memberi gambaran tentang bagaimana konsep ini boleh berguna di dunia nyata. Ayuh, kita bincangkan bersama!


Apakah Cabarannya?

Jadi, kita diberikan tatasusunan nombor dan indeks tertentu. Tugas kita ialah mencari nombor terkecil yang lebih besar daripada elemen pada indeks itu, kemudian kembalikan indeks. Jika tiada nombor yang sepadan, kita mesti kembalikan -1.

Contoh:

Susun: [4, 1, 3, 5, 6]

Indeks: 0 (nombor rujukan ialah 4)

Hasilnya ialah 3, kerana nombor terkecil yang lebih besar daripada 4 ialah 5, iaitu pada indeks 3.
kenapa boleh jadi 3?
Tatasusunan bermula dari 0
jadi:
4 : indeks 0
1 : indeks 1
3 : indeks 2
5 : indeks 3
6 : indeks 4


Penyelesaian yang Saya Cipta

Untuk menyelesaikan cabaran ini, saya mencipta fungsi yang dipanggil leastLarger. Ini kodnya:

function leastLarger(a, i) {
  let smaller = Infinity; // Nilai pembanding awal
  let result = -1;        // Default hasil kalau nggak ada elemen yang memenuhi

  for (let index = 0; index < a.length; index++) {
    if (a[index] > a[i] && a[index] < smaller) {
      smaller = a[index]; // Update nilai terkecil yang lebih besar
      result = index;     // Simpan indeks elemen
    }
  }

  return result; // Kembalikan hasil
}

Bagaimana ia berfungsi?

  1. Permulaan

    • Saya tetapkan lebih kecil kepada Infiniti sebagai nilai awal untuk perbandingan.
    • keputusan ditetapkan kepada -1 sekiranya tiada unsur yang memuaskan.
  2. Lelaran Tatasusunan

    • Saya menyemak setiap elemen dalam tatasusunan.
    • Ada dua syarat yang mesti dipenuhi:
      1. Elemen lebih besar daripada elemen rujukan (a[i]).
      2. Elemennya lebih kecil daripada perbandingan sebelumnya (lebih kecil).
    • Jika kedua-dua syarat dipenuhi, saya mengemas kini lebih kecil dan menyimpan indeks elemen dalam hasilnya.
  3. Keputusan Pengembalian

    • Jika terdapat elemen yang memuaskan, fungsi tersebut mengembalikan indeksnya.
    • Jika tiada, hasilnya masih -1.

Contoh Penggunaan

console.log(leastLarger([4, 1, 3, 5, 6], 0)); // Output: 3

Penjelasan:

  • Elemen rujukan ialah 4 (pada indeks 0).
  • Unsur yang lebih besar daripada 4 ialah [5, 6].
  • Daripada elemen tersebut, yang terkecil ialah 5, dan kedudukannya adalah pada indeks 3.

Penyelesaian Lanjutan: Ringkas dalam 1 Baris

Bagi anda yang suka pendekatan yang lebih "JavaScript sahaja", kami boleh menulis penyelesaian ini dalam satu baris kod menggunakan kaedah terbina dalam seperti penapis, Math.min dan findIndex:

function leastLarger(a, i) {
  let smaller = Infinity; // Nilai pembanding awal
  let result = -1;        // Default hasil kalau nggak ada elemen yang memenuhi

  for (let index = 0; index < a.length; index++) {
    if (a[index] > a[i] && a[index] < smaller) {
      smaller = a[index]; // Update nilai terkecil yang lebih besar
      result = index;     // Simpan indeks elemen
    }
  }

  return result; // Kembalikan hasil
}

Kod ini melakukan perkara yang sama, tetapi dalam gaya yang lebih berfungsi dan ringkas. Bagus untuk situasi di mana anda ingin menulis penyelesaian pantas tanpa terlalu banyak pembolehubah tambahan.


Kajian Kes Dunia Sebenar

Fungsi seperti ini sebenarnya agak relevan dalam pelbagai situasi sebenar. Beberapa contoh:

  1. Sistem Tempahan Tiket

    • Dalam sistem tiket, kita selalunya perlu mencari harga tempat duduk terendah yang lebih tinggi daripada harga tertentu (contohnya, untuk mengisi tempat duduk seterusnya).
  2. Penjadualan Tugas

    • Apabila membuat jadual, kita boleh mencari masa terdekat seterusnya yang lebih besar daripada masa tertentu, contohnya untuk memperuntukkan slot mesyuarat atau tugas seterusnya.
  3. Pengurusan Inventori

    • Di gudang, jika anda perlu mencari lokasi penyimpanan dengan kapasiti paling kecil yang masih mencukupi untuk menyimpan barang-barang tertentu.

Cabaran ini kelihatan mudah, tetapi apabila saya mencubanya, saya menyedari bahawa logik yang kemas adalah sangat penting. Apa yang saya suka tentang cabaran ini ialah sejauh mana konsep ini relevan untuk diterapkan dalam dunia sebenar.

Oh ya, kalau kawan-kawan ada cara lain untuk menyelesaikan cabaran ini, jangan segan silu share di ruangan komen, OK! Mana tahu, kita mungkin belajar daripada pendekatan berbeza antara satu sama lain. Semoga perkongsian ini bermanfaat, dan selamat mengekod! ?

Atas ialah kandungan terperinci Berkongsi Penyelesaian Cabaran CodeWars: Paling Kecil, daripada Asas kepada Aris. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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 sebelumnya:Notasi O BesarArtikel seterusnya:Notasi O Besar