使用 JavaScript 將數字範圍拆分為特定數量的區間


在本題中,我們的任務是編寫一個函式,利用 Javascript 將數字範圍拆分為特定數量的區間。為此,我們需要提供起始值、結束值和區間數量。

理解題意

題意要求建立一個函式,能夠將一個數字範圍分成特定數量的區間。輸入將是範圍的起始和結束數字以及所需的區間數量。輸出應為一個包含子陣列的陣列,每個子陣列表示一個區間。這些子陣列將包含該區間的起始和結束數字。

例如 - 如果範圍是從 0 到 100,並且我們必須將範圍分成 5 個區間,那麼該函式應返回一個包含 5 個子陣列的陣列。因此,每個子陣列都應表示大小為 20 的區間。第一個子陣列將包含第一個區間的起始和結束數字,第二個子陣列將包含第二個區間的起始和結束數字,依此類推,直到最後一個子陣列包含最終區間的起始和結束數字。

上述問題的邏輯

我們將開發一個函式來解決給定的問題。首先,我們將範圍大小除以區間數量,以確定每個區間的 size。然後,我們將建立一個新的空陣列來儲存區間。藉助迴圈,我們將迭代區間數量並確定每個區間的起始點和結束點。最後,我們將返回包含拆分範圍的區間陣列。

演算法

步驟 1 − 建立一個名為 splitRange 的函式,該函式接受三個引數:rangeStart,是範圍的起始數字;rangeEnd,是範圍的結束數字;numIntervals,是範圍將被拆分的區間數量。

步驟 2 − 在上述方法中,我們將範圍大小除以區間數量來計算每個區間的 size。

步驟 3 − 因為我們必須處理區間,所以需要建立一個空陣列來儲存它們。

步驟 4 − 該函式將在 for 迴圈中處理區間的起始和結束數字。

步驟 5 − 獲取區間後,我們將它們推送到區間陣列中,它們看起來像一個子陣列。因此,這些子陣列將具有起始和結束數字。

步驟 6 − 最後,我們將看到一個包含拆分範圍的子陣列陣列。

演算法程式碼

//function to split the range in array
function splitRange(rangeStart, rangeEnd, numIntervals) {
    const intervalSize = (rangeEnd - rangeStart) / numIntervals;
    const intervals = [];

    for (let i = 0; i < numIntervals; i++) {
        const start = rangeStart + i * intervalSize;
        const end = start + intervalSize;
        intervals.push([start, end]);
    }
    return intervals;
}
const rangeStart = 0;
const rangeEnd = 100;
const numIntervals = 5;
const intervals = splitRange(rangeStart, rangeEnd, numIntervals);
console.log(intervals);

複雜度

該演算法的時間複雜度為 O(n),其中 n 是區間數。造成這種複雜度的原因是我們函式中定義的迴圈遍歷區間數以計算每個區間的起始和結束數字。該函式的空間複雜度也是 O(n),其中 n 是區間數。因為該函式正在建立一個數組來儲存區間,所以它將包含 n 個子陣列,每個子陣列代表一個區間。並且陣列的大小與區間數成正比,所以空間複雜度是 O(n)。

結論

以上程式碼提供了一個簡單而有效的解決方案,用於在 Javascript 中將數字範圍拆分為特定數量的區間。它具有 O(n) 的時間複雜度和 O(n) 的空間複雜度。

更新於:2023年5月18日

3K+ 次瀏覽

啟動你的職業生涯

透過完成課程獲得認證

開始
廣告