小於當前數字的 JavaScript


在給定的問題陳述中,我們必須藉助 Javascript 找到小於當前數字的較小數字。因此,為了完成此任務,我們將跟蹤專案並將當前數字遞減 1 以獲得所需的結果。

理解問題陳述

問題陳述要求編寫一個函式,該函式將接收一個整數陣列作為輸入,並返回相同長度的陣列,其中每個元素顯示給定陣列中小於相應專案的數字的數量。例如,如果我們有一個數組 [5, 4, 3, 2, 1],則輸出應如下所示:[4, 3, 2, 1, 0]。

為了解決這個問題,我們將遍歷給定的陣列,並將每個專案與陣列中所有剩餘的專案進行比較,以獲取較小專案的數量。

上述問題的邏輯

因此,基本上我們將使用 reduce 和 filter 方法來迭代給定的輸入陣列,並且我們將生成一個新陣列,其中包含每個專案的較小數字的數量。Javascript 的 reduce 方法將接受兩個引數。在函式內部,我們將使用 Javascript 的 filter 方法獲取一個新陣列,其中包含所有小於當前數字的其他專案。然後,我們將獲取其長度以獲取較小數字的數量。然後將計數的值推送到結果陣列中,併為下一次迭代返回更新後的陣列。

演算法

步驟 1 - 透過在其中定義整數數字的陣列來啟動程式。

步驟 2 - 現在定義一個函式以獲取小於當前數字的小數字。

步驟 3 - 使用 reduce 方法開始回撥函式作為 res 和結果陣列的初始值作為 num。

步驟 4 - 在函式內部,使用 filter 方法定義一個新陣列來儲存給定陣列的所有較小數字。我們將獲得較小數字的長度。

步驟 5 - 將計數的值推送到結果陣列中,併為下一次遍歷返回更新後的 res 陣列。

演算法程式碼

const arr = [5, 4, 3, 2, 1];

//function to get the smaller number of current number
const smallerThanCurrent = (arr = []) => {
   return arr.reduce((res, num, i) => {
      const count = arr.filter(otherNum => otherNum < num).length;
      res.push(count);
      return res;
   }, []);
};
console.log(smallerThanCurrent(arr));

複雜度

上述方法使用 Javascript 的 reduce 和 filter 方法,時間複雜度為 O(n^2)。reduce 方法用於獲得更具函數語言程式設計的方法。

結論

我們已經實現了給定問題陳述的解決方案,以查詢陣列中小於當前數字的數字的數量。但是對於大型陣列,程式的時間複雜度效率不高,我們可能需要使用比該程式更有效的方法。

更新於:2023年5月18日

445 次檢視

開啟您的 職業生涯

透過完成課程獲得認證

開始
廣告

© . All rights reserved.