首頁 > web前端 > js教程 > 分享 CodeWars 挑戰解決方案:最小規模,從 Basic 到 Aris

分享 CodeWars 挑戰解決方案:最小規模,從 Basic 到 Aris

Susan Sarandon
發布: 2024-12-21 07:09:09
原創
287 人瀏覽過

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

從 CodeWars 挑戰中學習:最小規模

朋友們大家好!這次我想分享來自 CodeWars 的最小更大挑戰。這個挑戰確實令人興奮,因為它訓練了邏輯和系統思維,並給出了這個概念如何在現實世界中發揮作用的想法。來來來,我們一起討論一下!


挑戰是什麼?

因此,我們得到了一個數字數組和某個索引。我們的任務是找出比該索引處的元素大的最小數字,然後回傳索引。如果沒有匹配的數字,我們必須返回-1。

範例:

陣列:[4, 1, 3, 5, 6]

索引:0(參考編號為4)

結果是 3,因為大於 4 的最小數字是 5,它位於索引 3 處。
為什麼可以是3?
數組從0開始
所以:
4 : 索引 0
1 : 索引 1
3 : 索引 2
5 : 索引 3
6 : 索引 4


我創建的解決方案

為了解決這個挑戰,我創建了一個名為 lessLarger 的函數。程式碼如下:

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
}
登入後複製
登入後複製

它是如何運作的?

  1. 初始化

    • 我設定較小為Infinity作為初始值進行比較。
    • 如果沒有令人滿意的元素,結果將設定為 -1。
  2. 陣列迭代

    • 我檢查數組中的每個元素。
    • 必須滿足兩個條件:
      1. 此元素大於參考元素(a[i])。
      2. 元素比之前的比較小(更小)。
    • 如果兩個條件都滿足,我會更新得更小,並將元素索引保存在結果中。
  3. 回傳結果

    • 如果存在滿足要求的元素,則函數將傳回其索引。
    • 如果沒有,結果還是-1。

使用範例

console.log(leastLarger([4, 1, 3, 5, 6], 0)); // Output: 3
登入後複製

說明:

  • 參考元素為 4(索引為 0)。
  • 大於 4 的元素是 [5, 6]。
  • 這些元素中,最小的是 5,它的位置位於索引 3。

先進的解決方案:簡潔的一行

對於那些喜歡「僅 JavaScript」方法的人,我們可以使用內建方法(如 filter、Math.min 和 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
}
登入後複製
登入後複製

這段程式碼做了同樣的事情,但風格更加實用和簡潔。非常適合您想要編寫快速解決方案而無需太多附加變數的情況。


真實世界案例研究

這樣的函數其實在各種實際情況下都非常相關。一些例子:

  1. 訂票系統

    • 在票務系統中,我們經常需要找到高於某個價格的最低座位價格(例如填補下一個座位)。
  2. 任務調度

    • 制定日程時,我們可以尋找大於某個時間的下一個最接近的時間,例如分配會議時段或下一個任務。
  3. 庫存管理

    • 在倉庫中,如果您需要尋找一個容量最小但仍足以存放某些物品的存放位置。

這個挑戰看起來很簡單,但是當我嘗試之後,我發現整潔的邏輯非常重要。我喜歡這個挑戰的原因是這個概念在現實世界中的應用程度。

喔對了,如果朋友們還有其他方法來完成這個挑戰,請不要猶豫在評論欄中分享,好啊!誰知道呢,我們可能會互相學習不同的方法。希望這次分享有用,祝您編碼愉快! ?

以上是分享 CodeWars 挑戰解決方案:最小規模,從 Basic 到 Aris的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板